我有一个Apache服务器,在服务器上关联了两个域,比如domain1.com
和domain2.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
),这有什么原因吗?
谢谢你的帮忙
1条答案
按热度按时间x7yiwoj41#
当浏览器请求域时,Apache会查看该域并将其与VirtualHost定义(ServerName或ServerAlias)之一进行匹配。如果没有匹配,它将使用在配置中找到的第一个VirtualHost,即domain1。如果您请求一个域,Apache可以在域之间进行拆分。
通过IP,它不知道你想要哪个,除非你在你的服务器上定义1 domain == 1 ip。
您可以在domain1之前设置一个默认的VirtualHost来覆盖此行为。