就像问题所说的那样,只加载了第一个虚拟主机。如果我转到第二个域,它只会指向第一个域。我可以加载第二个域上的单个文件,但无法加载索引文件。
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/intranet/public_html
ServerName employees.nationalpurchasingpartners.com
ServerAlias employees.nationalpurchasingpartners.com
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/procurement/public_html
ServerName www.procurementnews.com
ServerAlias procurementnews.com
</VirtualHost>
我已浏览过以下链接,但无济于事。
http://wiki.apache.org/httpd/CommonMisconfigurations
添加 curl 的输出:
HTTP/1.1 200 OK
Server: Apache
Set-Cookie: COOKIE=10.5.19.235.1396565642197130; path=/
ETag: "AAAAUSZYEDQ"
Last-Modified: Thu, 06 Mar 2014 21:50:26 GMT
Set-Cookie: referrer=; path=/
Set-Cookie: t=d9979760bb8211e39a570015c5e70b87; path=/
Set-Cookie: referrer=procurementnews.com; path=/
Vary: Accept-Encoding,User-Agent
Cartoon: aalander4
Content-Type: text/html; charset=UTF-8
Date: Thu, 03 Apr 2014 22:54:02 GMT
X-Varnish: 1862602499
Age: 0
Via: 1.1 varnish
Connection: keep-alive
输出httpd -S
httpd-S 服务
*:80 is a NameVirtualHost
default server employees.nationalpurchasingpartners.com (/etc/httpd/conf/httpd.conf:1012)
port 80 namevhost employees.nationalpurchasingpartners.com (/etc/httpd/conf/httpd.conf:1012)
alias employees.nationalpurchasingpartners.com
port 80 namevhost www.procurementnews.com (/etc/httpd/conf/httpd.conf:1019)
alias procurementnews.com
答案1
如果您正在配置基于名称的虚拟主机,那么据我所知应该这样做:
像这样编辑你的 httpd.conf:
NameVirtualHost *:80
<VirtualHost employees.nationalpurchasingpartners.com:80>
ServerAdmin [email protected]
DocumentRoot /var/www/intranet/public_html
ServerName employees.nationalpurchasingpartners.com
</VirtualHost>
<VirtualHost procurementnews.com:80>
ServerAdmin [email protected]
DocumentRoot /var/www/procurement/public_html
ServerName www.procurementnews.com
ServerAlias procurementnews.com *.procurementnews.com
</VirtualHost>
然后运行:
# /etc/init.d/httpd restart
如果您想在同一台机器上测试它,您必须更新服务器的/etc/hosts
文件并在其中包含:
1.1.1.1 employees.nationalpurchasingpartners.com
2.2.2.2 procurementnews.com
或者确保您的 DNS 服务器已设置这些记录。
如果有效或无效,请更新。
答案2
您的全局配置(VirtualHost 之外的任何配置)是否包含相同的 ServerName?您可以为全局配置添加一个日志文件定义,并为每个虚拟主机添加一个日志文件定义,以查看每个虚拟主机正在处理的流量。
在测试任何内容之前备份所有配置文件,并在尝试应用任何更改之前始终使用“configtest”。
在 httpd.conf 中:
CustomLog logs/default_access_log combined
然后在您的 VirtualHost 定义中,为每个添加一个 CustomLog 条目:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/intranet/public_html
ServerName employees.nationalpurchasingpartners.com
ServerAlias employees.nationalpurchasingpartners.com # this entry is redundant
CustomLog logs/employees.nationalpurchasingpartners.com_access_log combined
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/procurement/public_html
ServerName www.procurementnews.com
ServerAlias procurementnews.com
CustomLog logs/www.procurementnews.com_access_log combined
</VirtualHost>
我看到您的服务器前面有 Varnish。您还应该验证 Varnish 是否使用 HTTP/1.1 来正确支持 Host 标头。您可能还想在 Varnish 中启用日志记录,以便查看发送回 Apache 的内容。
您还可以通过将组合的 LogFormat 行复制到新条目并添加来记录发送到 Apache 的“Host”标头
\"%{Host}i\"
例如
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" \"%{Host}i\"" with_host
然后将上述 Apache CustomLog 条目更改为使用“with_host”而不是“combined”。
测试后请务必恢复您的更改以使服务器恢复正常运行。