我正在使用Tomcat 5.5.9和Apache 2.x
我们正在尝试在ProxyPass中使用不同的路径名 而不是Tomcat上下文名称。
ProxyPass /path http://localhost:8080/contextname
然而,这不起作用。当这两个是相同的 然后一切正常。
我在网上看到的大多数例子都有相同的路径 Tomcat上下文名称。
我在Tomcat上下文中使用“context.xml”并且这样做 没有“server.xml”条目。另外,我使用普通的 httd.conf并且不使用任何VirtualHost条目。
感谢任何帮助。
此致
Diptenu
答案 0 :(得分:12)
我相信你需要两个
ProxyPass /path/ http://localhost:8080/contextname/
ProxyPassReverse /path/ http://localhost:8080/contextname/
有什么理由不使用mod_jk?
答案 1 :(得分:3)
RewriteEngine on
RewriteRule ^/path$ /path/ [R]
RewriteRule ^/path/(.*) /contextname/$1 [P]
ProxyPass /contextname/ protocol://192.168.15.48:8080/contextname/
ProxyPassReverse /contextname/ protocol://192.168.15.48:8080/contextname/
在这种情况下,“protocol”=“http”......
答案 2 :(得分:3)
为两个值添加斜杠:
ProxyPass /path/ http://localhost:8080/contextname/
答案 3 :(得分:2)
您的问题可能是应用程序生成的自引用URL。除了
之外,你无能为力选项2可能非常脆弱。 有关详细信息,请参阅the tomcat docs。
答案 4 :(得分:-2)
假设您的域名是bla.com,并且您希望将bla.com/path代理为8080 / contextname。
如果您使用以下内容,那么您最终会获得重定向到contextname
ProxyPass /path http://localhost:8080/contextname
ProxyPassReverse /path http://localhost:8080/contextname
结果:bla.com/contextname(在apache日志中重定向)
为了获得所需的结果,必须在contextname之后加一个斜杠。
ProxyPass /path http://localhost:8080/contextname/
ProxyPassReverse /path http://localhost:8080/contextname/
结果:bla.com/path
有点晚了,但这是google带你去的地方。