如何正确使用VirtualHost和mod_proxy为不同的传入域名和内部端口?

我正在尝试正确设置httpd.conf,但不pipe下面的子域/域组合,它们都parsing为相同的内部URL。

<Proxy *> Order Allow,Deny Allow from all </Proxy> ProxyRequests Off <VirtualHost *:80> Servername jira.firstfactoryinc.com ProxyPreserveHost On ProxyPass / http://localhost:8082/ ProxyPassReverse / http://localhost:8082/ </VirtualHost> <VirtualHost *:80> Servername jira.submitpatientforms.com ProxyPreserveHost On ProxyPass / http://localhost:8081/ ProxyPassReverse / http://localhost:8081/ </VirtualHost> <VirtualHost *:80> Servername mddev-jira.firstfactoryinc.com ProxyPreserveHost On ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ </VirtualHost> 

我究竟做错了什么?

你需要一个与你的<VirtualHost>定义相匹配的NameVirtualHost指令,否则要加载的第一个<VirtualHost>块将被用于该端口上的所有请求(这与你所看到的是正确的?)。

在上面的configuration的情况下:

 NameVirtualHost *:80 

VirtualHost块之外。 Listen指令旁边是个好地方。

您可能需要在每个VirtualHost中添加这样的内容,我做了:

 <Proxy *> Order Allow,Deny Allow from all </Proxy> 

显然,可以修改以适应您的安全需求。

您可能还想添加:

 ProxyRequests Off 

它应该是默认的,但取决于你的Apache版本和mod_proxy版本可能会出现。