如何在ProxyPass中使用与Tomcat上下文名称不同的路径名

时间:2009-09-08 12:23:27

标签: apache tomcat mod-proxy

我正在使用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

5 个答案:

答案 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。除了

之外,你无能为力
  1. 更改应用或
  2. 重写它吐出的所有东西。
  3. 选项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带你去的地方。