子域代理传递所有指向单个服务器

时间:2011-12-09 06:29:21

标签: apache2 reverse-proxy tomcat

我在端口8080上的一个apache tomcat上托管了2个应用程序 >

  
      
  • http://mydomain.com:8080/application1
  •   
  • http://mydomain.com:8080/application2
  •   

我想在他们之前运行一个apache代理,具有以下行为 >

  
      
  • http://mydomain.com/* (apache2) -> http://mydomain.com:8080/application1/* (tomcat)
  •   
  • http://subdomain.mydomain.com/* (apache2) -> http://mydomain.com:8080/application2/* (tomcat)
  •   

我现在所拥有的最好的是2台具有不同IP的计算机,并相应地路由域和子域。

理想情况下,我希望apache代理和2个应用程序位于SAME机器上......

任何有屁股DEVOps技能协助的人都可以吗?

2 个答案:

答案 0 :(得分:21)

除了@Jon Lin的回答,请考虑使用ProxyPassReverse,以防您的应用进行任何重定向。它使Apache在响应中具有正确的URL(更多关于ProxyPassReverse)。它看起来像这样:

<VirtualHost subdomain.mydomain.com:80>
    ProxyPass / http://localhost:8080/application1/
    ProxyPassReverse / http://localhost:8080/application1/
</VirtualHost>

<VirtualHost mydomain.com:80>
    ProxyPass / http://localhost:8080/application1/
    ProxyPassReverse / http://localhost:8080/application1/
</VirtualHost>

我希望它有所帮助。

答案 1 :(得分:1)

mydomain.com (apache)的virtualhost配置中,您需要

ProxyPassMatch ^/(.*)$ http://mydomain.com:8080/application1/$1

subdomain.mydomain.com (apache)的虚拟主机配置中,您需要

ProxyPassMatch ^/(.*)$ http://mydomain.com:8080/application2/$1

两个配置文件应该在同一台机器上,甚至是同一个文件。有关如何设置的一些示例,请参阅VirtualHost Examples