apache 一台服务器上有两个网站,为什么到达服务器的IP最终会出现在其中一个网站上,而不是根上?

disho6za  于 2023-03-09  发布在  Apache
关注(0)|答案(1)|浏览(135)

我有一个Apache服务器,在服务器上关联了两个域,比如domain1.comdomain2.com,并将它们的代码库如下所示:

var/www/html/
        |
        |
        ---- domain1.com/
        |    |
        |    |___ index.html
        |         ... other site content
        |
        ---- domain2.com/ 
        |    |
        |    |___ index.html
        |         ... other site content

/etc/apache2/sites-enabled/中,我指定了两个实现:

    • 域名1.com.conf**
<VirtualHost *:80>
    ServerAdmin admin@domain1.com
    DocumentRoot /var/www/html/domain1.com
    ServerName domain1.com
</VirtualHost>
    • 域名2.com.conf**
<VirtualHost *:80>
    ServerAdmin admin@domain2.com
    DocumentRoot /var/www/html/domain2.com
    ServerName domain2.com
</VirtualHost>

然后我启用了两个网站:

a2ensite domain1.com.conf domain2.com.conf
systemctl reload apache2

因此,一切正常,当我转到domain1.com时,我看到了预期的内容,当我转到domain2.com时也是如此,但当我使用Web浏览器访问服务器的IP时,我看到的是domain1.com的内容(我想补充的是,domain2.com的内容是用. htaccess/. htpasswd组合保护的,而不是domain1.com),这有什么原因吗?
谢谢你的帮忙

x7yiwoj4

x7yiwoj41#

当浏览器请求域时,Apache会查看该域并将其与VirtualHost定义(ServerName或ServerAlias)之一进行匹配。如果没有匹配,它将使用在配置中找到的第一个VirtualHost,即domain1。如果您请求一个域,Apache可以在域之间进行拆分。
通过IP,它不知道你想要哪个,除非你在你的服务器上定义1 domain == 1 ip。
您可以在domain1之前设置一个默认的VirtualHost来覆盖此行为。

相关问题