Apache Centos 6.5 仅加载第一个虚拟主机

Apache Centos 6.5 仅加载第一个虚拟主机

就像问题所说的那样,只加载了第一个虚拟主机。如果我转到第二个域,它只会指向第一个域。我可以加载第二个域上的单个文件,但无法加载索引文件。

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”。

测试后请务必恢复您的更改以使服务器恢复正常运行。

相关内容