我在端口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技能协助的人都可以吗?
答案 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。