最近,我需要同时使用Apache和Tomcat,其中Apache被用作反向代理,以将请求转发到端口80到localhost:8080,我这样做:
<VirtualHost *:*>
ProxyPass / http://localhost:8080/app/
</VirtualHost>
它的效果非常好。
现在,我需要做的是:我让Tomcat在另一个端口8082上监听和服务。我需要能够使用www.mydomain.com:8082访问它。我试过了:
<VirtualHost *:8082>
ProxyPass / http://localhost:8082/app/
</VirtualHost>
但没有运气。我不能在8082上听,因为Tomcat正在这样做。
答案 0 :(得分:2)
您上面所做的是(失败)尝试将/
网址空间映射到两个不同的地方。那永远无法发挥作用。
在代理Tomcat时,重写URL路径绝对不是一个好主意(例如/
- &gt; /app/
,因为Tomcat会遇到各种各样的困惑。&#39 ;绘制单个应用程序要好得多:
<VirtualHost *:*>
ProxyPass /app1/ http://localhost:8080/app1/
ProxyPass /app2/ http://localhost:8080/app2/
ProxyPass /app3/ http://localhost:8082/app3/
ProxyPass /app4/ http://localhost:8082/app4/
# If you need a fall-back application for `/`, just map it last.
ProxyPass / http://localhost:8080/
</VirtualHost>
请注意,最后一行是将/
映射到Tomcat的ROOT
上下文(挂载在/
&#39;)。不要以任何其他方式这样做,否则你会花费数年的时间尝试让所有事情都按照推荐的方式完成。