apache的双代理语句

时间:2013-12-10 17:39:03

标签: apache tomcat proxy

正如你所看到的,我试图让/和/ BowlingFacelets / faces /指向同一个地方。

问题是,当我对表单进行求和时,JSF页面将添加/ BowlingFacelets / faces /。但是,我不希望最终用户必须键入这样一个长语句来启动应用程序。有没有办法做到这一点?

请注意,如果我手动添加

,这将有效
score.megahooked.com/BowlingFacelets/faces to the URL
ProxyPass / http://megahooked.com:8080/
ProxyPassReverse / http://megahooked.com:8080/

这将无法正常使用

score.megahooked.com/createEvent.xhtml

因为提交新网址时会是     找不到找到的.megahooked.com/BowlingFacelets/faces/updateEvent.xhtml。


<VirtualHost *:80>
    ServerName score.megahooked.com
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass / http://megahooked.com:8080/BowlingFacelets/faces/
    ProxyPassReverse / http://megahooked.com:8080/BowlingFacelets/faces/
    ProxyPass /BowlingFacelets/faces/ http://megahooked.com:8080/BowlingFacelets/faces/
    ProxyPassReverse /BowlingFacelets/faces/ http://megahooked.com:8080/BowlingFacelets/faces/

</VirtualHost>

1 个答案:

答案 0 :(得分:0)

解决方案可能是使用mod_proxy_html。它可以解析HTML文档并重写内部URL。这里例如我使应用程序“restfrontend”(映射到“/ restfrontend”)可以作为根应用程序访问(映射到“/”)

ProxyHTMLEnable On
ProxyHTMLExtended On
ProxyHTMLMeta On
ProxyHTMLLogVerbose On
ProxyHTMLURLMap ^/restfrontend()$ $1 [LR]
ProxyHTMLURLMap /restfrontend/ /

ProxyPassReverseCookiePath /restfrontend /
ProxyHTMLDoctype HTML

我强烈反对这样做。该模块很难配置。在同一时间配置两条可能的路径将是一场噩梦。

更好的解决方案是直接在Tomcat中将应用程序部署为ROOT,并为其他URL快捷方式添加一些重定向(RewriteRule,[R = 301]选项)。