我已经设置了两个虚拟主机并使用 a2ensite 启用了它们。
它是 Ubuntu Server 14.04.1 LTS、Apache2 等。
因此 /etc/apache2/sites-available 中有两个配置文件,而 sites-enabled 中则有它们各自的符号链接。
问题是只有第一个可以访问。我使用的是基于名称的虚拟主机,因此多个域名指向一个专用 IP。当访问第二个添加的域时,服务器根本没有响应,甚至没有错误代码。该域确实解析到正确的 IP。访问第一个域或 IP 直接显示第一个虚拟主机站点。
以下将两个配置更改为 example1 和 example2。
<VirtualHost example1.co.uk:80>
DocumentRoot "/var/www/example1.co.uk"
ServerAdmin [email protected]
ServerName example1.co.uk
<Directory "/var/www/example1.co.uk">
Order allow,deny
Allow from all
Allowoverride all
</Directory>
</VirtualHost>
<VirtualHost example2.com:80>
DocumentRoot "/var/www/example2.com"
ServerAdmin [email protected]
ServerName example2.com
<Directory "/var/www/example2.com">
Order allow,deny
Allow from all
Allowoverride all
</Directory>
</VirtualHost>
我已经研究这个问题好几天了,耗尽了我的知识。在我看来,这似乎不是一个典型的配置错误。希望你能帮忙。谢谢。
谢谢您的帮助和建议。
答案1
这两个域名不是解析到同一个IP。
[jenny@temeraire ~] $ dig epints.com A
;; QUESTION SECTION:
;epints.com. IN A
;; ANSWER SECTION:
epints.com. 300 IN A 198.23.203.161
[jenny@temeraire ~] $ dig reefbase.co.uk A
;; QUESTION SECTION:
;reefbase.co.uk. IN A
;; ANSWER SECTION:
reefbase.co.uk. 300 IN A 198.23.203.162
这就是隐藏域名是一件坏事的原因……
如果两个主机名有解析为相同的 IP,Apache 不可能只响应其中一个。但是,例如,过滤反向代理或防火墙可能会阻止包含其中一个主机名的包;这就是为什么 telnet 如此有用,因为它以浏览器无法做到的方式向您显示通信的每个步骤。
答案2
您必须添加 NameVirtualHost 指令才能在同一 IP 地址上运行多个 vhost。在 VirtualHost 开始之前添加以下行。
NameVirtualHost *:80