同一IIS服务器部署多网站及子域名配置方法问询
这事儿其实就是Web服务器里的**基于名称的虚拟主机(Name-Based Virtual Hosts)**配置场景,主流的Nginx和Apache都能轻松搞定,我给你分两种服务器来写具体的配置步骤:
用Nginx实现的配置方法
首先得确保你的Nginx已经正常运行,接下来可以修改主配置文件(通常是/etc/nginx/nginx.conf),或者更规范的方式是在/etc/nginx/sites-available/目录下新建单独的配置文件,再软链接到sites-enabled/目录。
1. 配置主域名指向不同站点
每个域名对应一个server块,通过server_name字段来区分请求来自哪个域名:
# 处理domain1.example的请求,指向第一个站点 server { listen 80; server_name domain1.example; root /var/www/domain1; # 这里替换成你第一个站点的根目录路径 index index.html index.htm; # 默认首页文件 # 可选:配置日志路径,方便排查问题 access_log /var/log/nginx/domain1.access.log; error_log /var/log/nginx/domain1.error.log; } # 处理domain2.example的请求,指向第二个站点 server { listen 80; server_name domain2.example; root /var/www/domain2; # 第二个站点的根目录 index index.html index.htm; access_log /var/log/nginx/domain2.access.log; error_log /var/log/nginx/domain2.error.log; }
2. 配置子域名x.domain1.example指向第三个站点
只需要再新增一个server块,把server_name设为对应的子域名就行:
server { listen 80; server_name x.domain1.example; root /var/www/x-domain1; # 第三个站点的根目录 index index.html index.htm; access_log /var/log/nginx/x-domain1.access.log; error_log /var/log/nginx/x-domain1.error.log; }
配置完后,先执行nginx -t检查配置语法是否正确,没问题的话重启Nginx生效:
systemctl restart nginx
用Apache实现的配置方法
Apache的虚拟主机配置一般放在/etc/apache2/sites-available/目录下,我们可以给每个域名/子域名新建单独的配置文件,再用命令启用。
1. 配置主域名指向不同站点
新建两个配置文件,比如domain1.conf和domain2.conf,内容分别如下:
domain1.example的配置:
<VirtualHost *:80> ServerName domain1.example ServerAdmin webmaster@domain1.example # 可选:管理员邮箱 DocumentRoot /var/www/domain1 # 第一个站点的根目录 # 日志配置 ErrorLog ${APACHE_LOG_DIR}/domain1.error.log CustomLog ${APACHE_LOG_DIR}/domain1.access.log combined </VirtualHost>
domain2.example的配置:
<VirtualHost *:80> ServerName domain2.example ServerAdmin webmaster@domain2.example DocumentRoot /var/www/domain2 # 第二个站点的根目录 ErrorLog ${APACHE_LOG_DIR}/domain2.error.log CustomLog ${APACHE_LOG_DIR}/domain2.access.log combined </VirtualHost>
2. 配置子域名x.domain1.example指向第三个站点
新建x-domain1.conf配置文件:
<VirtualHost *:80> ServerName x.domain1.example ServerAdmin webmaster@x.domain1.example DocumentRoot /var/www/x-domain1 # 第三个站点的根目录 ErrorLog ${APACHE_LOG_DIR}/x-domain1.error.log CustomLog ${APACHE_LOG_DIR}/x-domain1.access.log combined </VirtualHost>
配置完成后,先启用这些站点:
a2ensite domain1.conf domain2.conf x-domain1.conf
然后检查配置语法:
apache2ctl configtest
如果提示Syntax OK,就重启Apache生效:
systemctl restart apache2
重要前提
别忘了先在你的DNS服务商那边配置好解析:把domain1.example、domain2.example和x.domain1.example都指向IP地址192.0.2.1,不然Web服务器收不到对应域名的请求,配置再好也没用哦!
内容的提问来源于stack exchange,提问作者Jamie Gaunt




