【发布时间】:2012-06-26 03:47:17
【问题描述】:
我需要将反向代理返回到运行 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
有什么想法我需要做不同的事情吗?
谢谢。
【问题讨论】:
标签: grails tomcat7 reverse-proxy apache2.2