下面我将以最主流的两个Web服务器——Apache 和Nginx——在Linux 系统上为例,详细讲解如何操作,同时也会简要介绍Windows IIS 的方法。
无论使用哪种服务器,实现多个站点的核心原理都是一样的:
1、有多个域名(或端口/IP)指向你的服务器。
2、在Web服务器配置中,为每个域名(或端口/IP)指定不同的网站内容目录。
3、 当用户访问某个域名时,服务器会根据配置,从对应的目录中提供文件。
1、拥有一个服务器:可以是云服务器(VPS)、本地服务器甚至树莓派。
2、安装Web服务器软件:如 Apache 或 Nginx。
3、拥有多个域名(或者使用本地Hosts文件模拟):
* 如果你有真实的域名(如site1.com
,site2.com
),将它们的A记录都解析到你的服务器IP。
如果只是在本地测试,可以修改你电脑上的hosts
文件(Windows在C:\Windows\System32\drivers\etc\hosts
, Linux/Mac在/etc/hosts
),添加如下内容来模拟域名解析
127.0.0.1 site1.test 127.0.0.1 site2.test
(假设你的服务器就在本机)
Apache 通过虚拟主机(VirtualHost) 来实现多站点。
步骤:
1、创建网站根目录
为每个站点创建一个单独的目录,用于存放网站文件,通常放在/var/www/
下。
sudo mkdir -p /var/www/site1.test/public_html sudo mkdir -p /var/www/site2.test/public_html
2、设置目录权限(可选,但建议)
sudo chown -R www-data:www-data /var/www/site1.test/public_html sudo chown -R www-data:www-data /var/www/site2.test/public_html sudo chmod -R 755 /var/www
(www-data
是Apache默认的运行用户)
3、创建测试页面
在每个目录下创建一个index.html
文件以便测试。
/var/www/site1.test/public_html/index.html
<html> <head><title>Site 1</title></head> <body><h1>Welcome to Site 1!</h1></body> </html>
/var/www/site2.test/public_html/index.html
<html> <head><title>Site 2</title></head> <body><h1>Welcome to Site 2!</h1></body> </html>
4、创建虚拟主机配置文件
Apache 的站点配置文件通常在/etc/apache2/sites-available/
目录下,最佳实践是为每个站点创建一个独立的配置文件。
创建site1.test.conf
sudo nano /etc/apache2/sites-available/site1.test.conf
填入以下内容
<VirtualHost *:80> ServerAdmin admin@site1.test ServerName site1.test ServerAlias www.site1.test DocumentRoot /var/www/site1.test/public_html ErrorLog ${APACHE_LOG_DIR}/site1_error.log CustomLog ${APACHE_LOG_DIR}/site1_access.log combined <Directory "/var/www/site1.test/public_html"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
* 同样地,为site2.test
创建配置文件site2.test.conf
,并修改相应的ServerName
,DocumentRoot
, 和日志文件路径。
5、启用站点并重载配置
启用站点使用a2ensite
命令启用我们刚创建的配置。
sudo a2ensite site1.test.conf sudo a2ensite site2.test.conf
禁用默认站点(如果存在)
sudo a2dissite 000-default.conf
测试配置是否有语法错误
sudo apache2ctl configtest
(如果输出Syntax OK
,则继续)
重新加载 Apache 使配置生效
sudo systemctl reload apache2 # 或 sudo service apache2 reload
6、测试访问
在浏览器中访问http://site1.test
和http://site2.test
,你应该能看到之前创建的不同测试页面。
Nginx 通过服务器块(Server Block) 来实现多站点,概念与 Apache 的 VirtualHost 类似。
步骤:
1、创建网站根目录(与Apache相同)
sudo mkdir -p /var/www/site1.test/html sudo mkdir -p /var/www/site2.test/html sudo chown -R www-data:www-data /var/www/site1.test/html sudo chown -R www-data:www-data /var/www/site2.test/html sudo chmod -R 755 /var/www
(Nginx 默认用户也可能是nginx
,请根据你的系统确认)
2、创建测试页面(与Apache相同,放入刚创建的html
目录)
3、创建服务器块(Server Block)配置文件
Nginx 的站点配置文件通常在/etc/nginx/sites-available/
目录下,同样,为每个站点创建独立文件。
创建site1.test
sudo nano /etc/nginx/sites-available/site1.test
填入以下内容
server { listen 80; listen [::]:80; root /var/www/site1.test/html; index index.html index.htm index.nginx-debian.html; server_name site1.test www.site1.test; location / { try_files $uri $uri/ =404; } }
* 同样地,为site2.test
创建配置文件。
4、启用站点并重载配置
启用站点在 Nginx 中,需要通过创建符号链接,将sites-available
中的配置文件链接到sites-enabled
目录。
sudo ln -s /etc/nginx/sites-available/site1.test /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/site2.test /etc/nginx/sites-enabled/
测试配置是否有语法错误(非常重要!)
sudo nginx -t
(如果输出test is successful
或syntax is ok
,则继续)
重新加载 Nginx 使配置生效
sudo systemctl reload nginx # 或 sudo service nginx reload
5、测试访问
在浏览器中访问http://site1.test
和http://site2.test
进行测试。
方法三:在 Windows 上使用 IIS 创建多个站点
1、 打开IIS 管理器。
2、 在左侧的“连接”窗格中,右键单击“站点”,然后选择“添加网站...”。
3、 在弹出窗口中填写信息:
网站名称任意易记的名字(如My Site 1
)。
物理路径选择该网站文件所在的文件夹(如C:\inetpub\wwwroot\site1
)。
绑定
类型http
或https
。
IP 地址 可以选择“全部未分配”或服务器上的特定IP。
端口 通常为80
(HTTP) 或443
(HTTPS),如果要用端口区分站点,可以设置不同的端口(如81, 82等)。
主机名 填写域名(如site1.test
)。这是用域名区分站点的关键。
4、 点击“确定”,重复步骤2-4添加其他站点。
5、 同样,需要在DNS或本地hosts
文件(C:\Windows\System32\drivers\etc\hosts
)中配置域名解析。
特性 | Apache | Nginx |
配置目录 | /etc/apache2/sites-available/ 和sites-enabled/ | /etc/nginx/sites-available/ 和sites-enabled/ |
配置命令 | a2ensite ,a2dissite | 手动创建符号链接ln -s |
核心概念 | 虚拟主机 (VirtualHost) | 服务器块 (Server Block) |
重载配置 | sudo systemctl reload apache2 | sudo systemctl reload nginx |
测试配置 | sudo apache2ctl configtest | sudo nginx -t |
使用基于域名的虚拟主机是最常见和方便的方式。
始终在修改配置后测试语法,避免服务器因配置错误而崩溃。
为每个站点使用独立的配置文件,便于管理和维护。
如果面向公网,考虑为站点配置SSL证书(使用 Let‘s Encrypt 的 Certbot 工具可以非常简单地为Apache/Nginx自动配置HTTPS)。
希望这份详细的指南能帮助你成功创建多个Web站点!
文章摘自:https://idc.huochengrm.cn/fwq/14679.html
评论