我正在尝试设置一个新的虚拟主机newsletter.mydomain.com
。
我还使用mod_proxy
将所有 HTTP 流量路由到我的应用程序服务器(IP 为 1.1.1.1)。
mod_proxy
效果很好,但我在设置虚拟主机时遇到了真正的困难:
当我尝试浏览我的 VHOST 时,我得到的只是我的主要网站(例如,我已将 DocumentRoot 设置为它,或者在另一次尝试中 - 应该路由流量的 ProxyPass 声明)
这是我的 httpd.conf 文件的简短片段
ServerRoot "C:/xampp/apache"
Listen 80
NameVirtualHost _default_:80
ServerAdmin postmaster@localhost
ServerName www.mydomain.com:80
DocumentRoot "C:/xampp/htdocs"
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<VirtualHost _default_:80>
ServerName newsletter.mydomain.com
ProxyPreserveHost On
ProxyPass / http://1.1.1.1:8080/Newsletter/
ProxyPassReverse / http://1.1.1.1:8080/Newsletter/
</VirtualHost>
ProxyPass / http://1.1.1.1/
ProxyPassReverse / http://1.1.1.1/
主网站运行良好 - 虚拟主机 - 什么也没有!对这个问题有什么想法吗?(使用 Windows 2008 Server R2)
答案1
_default_:80
将*:80
两处都改为。该_default_
条款具体如下:不是用于NameVirtualHost
路由 VHost。
但是,这仍然不会像您预期的那样工作。一旦您声明了*:80
,NameVirtualHost
您的“默认”网站将永远不会显示。(根据:http://httpd.apache.org/docs/2.2/mod/core.html#virtualhost)
你想要的更像这样:
ServerRoot "C:/xampp/apache"
Listen 80
# Route all traffic based on Host: header
NameVirtualHost *:80
ServerAdmin postmaster@localhost
ServerName www.mydomain.com:80
# This will never be used:
DocumentRoot "C:/xampp/htdocs"
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
# All non-matching Host: headers use the first VirtualHost:
<VirtualHost *:80>
ServerName mydomain.com
ServerAlias www.mydomain.com
DocumentRoot "C:/xampp/htdocs"
ProxyPass / http://1.1.1.1/
ProxyPassReverse / http://1.1.1.1/
</VirtualHost>
# Specific VirtualHost for "newsletter.mydomain.com":
<VirtualHost *:80>
ServerName newsletter.mydomain.com
ProxyPreserveHost On
ProxyPass / http://1.1.1.1:8080/Newsletter/
ProxyPassReverse / http://1.1.1.1:8080/Newsletter/
</VirtualHost>