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

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

我正在尝试正确设置 httpd.conf,但无论下面的子域/域组合如何,它们都解析为相同的内部 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>

我究竟做错了什么?

答案1

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

对于上述配置来说:

NameVirtualHost *:80

VirtualHost区块外面。 与您的Listen指令并排放置是不错的选择。

答案2

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

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

显然,可以进行修改以满足您的安全需求。

您可能还想添加:

ProxyRequests Off

它应该是默认的,但根据您的 Apache 版本和 mod_proxy 版本,可能会出现一些问题。

相关内容