You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

同一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.confdomain2.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.exampledomain2.examplex.domain1.example都指向IP地址192.0.2.1,不然Web服务器收不到对应域名的请求,配置再好也没用哦!

内容的提问来源于stack exchange,提问作者Jamie Gaunt

火山引擎 最新活动