是否可以使用只有一个IP地址的ProxyPass

时间:2013-07-12 22:32:11

标签: apache proxy reverse-proxy ajp

我希望实现此配置。所以我尝试了这个,但服务器总是在Apache下的server_test中寻找server_prodhtdocs。我想要的是将请求重定向到Tomcat服务器。如果我使用不带/ server_test和/ server_prod的不同端口,它可以工作,但这不是我想要的。

<virtualhost mydomaine.com/server_test:80>
    ServerName mydomaine.com    
    ProxyRequests Off  
    ProxyPass / ajp://internalIp:8008/
    ProxyPassReverse / http://mydomaine.com/server_test/
    ProxyPassReverseCookiePath / /
</virtualhost>

<virtualhost mydomaine.com/server_prod:80>
    ServerName mydomaine.com    
    ProxyRequests Off     
    ProxyPass / ajp://internalIp:8009/
    ProxyPassReverse / http://mydomaine.com/server_prod/
    ProxyPassReverseCookiePath / /
</virtualhost>

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

试试这个:

<virtualhost mydomaine.com:80>
   ServerName mydomaine.com    
   ProxyRequests Off  
   ProxyPass /server_test ajp://internalIp:8008/
   ProxyPass /server_prod ajp://internalIp:8009/
   ProxyPassReverse /server_test ajp://internalIp:8008/
   ProxyPassReverse /server_prod ajp://internalIp:8009/
</virtualhost>

但是,您将无法使用ProxyPassReverseCookiePath,因为两个Tomcat站点都会将/的Cookie设置为路径。

为了让它按照我认为你想要的方式工作,你需要有两个独立的VirtualHost。如果您只有一个IP地址,则需要使用基于名称的虚拟主机。

例如,添加与test.mydomaine.com具有相同IP地址的子域mydomaine.com。然后使用此配置:

NameVirtualHost mydomaine.com:80
<virtualhost mydomaine.com:80>
  ServerName mydomaine.com    
  ProxyRequests Off
  ProxyPass / ajp://internalIp:8009/
  ProxyPassReverse / ajp://internalIp:8009/
</virtualhost>
<virtualhost mydomaine.com:80>
  ServerName test.mydomaine.com    
  ProxyRequests Off  
  ProxyPass / ajp://internalIp:8008/
  ProxyPassReverse / ajp://internalIp:8008/
</virtualhost>

然后,您可以访问http://mydomaine.com/的生产网站和http://test.mydomaine.com/的测试网站。