我需要将反向代理返回到运行 grails 应用程序的 tomcat 服务器。我总是看到这样的反向代理示例:
ProxyRequests Off
ProxyPass / http://localhost:8080/appname/
ProxyPassReverse / http://localhost:8080/appname/
ProxyPreserveHost On
但是,在我所有的应用程序中,当我这样做时,页面会出现并且我的静态数据会像这样加载上下文:/ appname/static/ [jsapp.js][mycss.css]
因此,样式和功能都丢失了。所以我的解决方法是这样做:
ProxyRequests Off
ProxyPass /appname/ http://localhost:8080/appname/
ProxyPass / http://localhost:8080/appname/
ProxyPassReverse /appname/ http://localhost:8080/appname/
ProxyPassReverse / http://localhost:8080/appname/
ProxyPreserveHost On
我猜这是一个反向反向代理;无论哪种方式,它看起来都很老套,并且(我认为)有副作用;它在其中创建带有 tomcat 上下文的 URL:http://servername.com/appname/user/username而不是http://servername.com/user/username。如果可能的话,我会更喜欢后者,而不会丢失样式。
笔记:
- 当我转到基本 URL:http://servername.com 时,它工作正常,之后我单击的任何链接都会在 URL 中添加“/appname/”名称。
- 我相信我可以通过将tomcat上的应用程序设置为ROOT应用程序来解决这个问题,但是,我不希望这样做。
- 此示例使用 HTTP,我通常使用 AJP 协议,但我最后尝试 HTTP 只是为了好玩
- 这是在 NameVirtualHost 配置中。
- Apache 2.2.15、Tomcat 7.0.27、CentOS 6.2 版(最终版)、java 版本“1.7.0_04”、Grails 2.0.4
关于我需要做不同的事情有什么想法吗?
谢谢。