rip*_*234 6 java apache reverse-proxy playframework
我有一个Apache 2前端,它提供两种请求:
MOD-proxy.conf
ProxyPass /playapp/ http://localhost:9000/
ProxyPassReverse /playapp/ http://localhost:9000/
Run Code Online (Sandbox Code Playgroud)
最终结果是请求说http://mysite.com/playapp/Controller/action
到达Play服务器http://localhost:9000/Controller/action
现在,玩!正确提供页面,但所有链接,包括javascript,css和其他页面的链接都被破坏.例如,如果视图使用:
#{stylesheet 'style.css' /}
Run Code Online (Sandbox Code Playgroud)
然后渲染的结果是
<link rel="stylesheet" type="text/css" href="/public/stylesheets/style.css" charset="utf-8" ></link>
Run Code Online (Sandbox Code Playgroud)
所以最终用户尝试抓取http://mysite.com/public/stylesheets/style.css
,返回404,因为它实际上不是Play的一部分!应用程序.
在这里配置Apache + Play的正确方法是什么?
我正在寻找的结果是Play!在最终呈现的HTML中返回诸如此类的URL(或者可能为Apache重写URL):http://mysite.com/playapp/public/stylesheets/style.css
此外,我确实需要一些能力链接Play应用程序之外.例如,我希望将主路由(/)映射到我的绝对根(http://mysite.com/
),而不是Play的根.
首先,有一点很重要:apache2 无法(轻松)更改页面中的链接。因此 Play 必须已经提供了正确的内容。
使用子域将使所有这些完全透明,但让我们解决您的问题。
你的问题确实有两点,
使用刚刚设置的路线
GET /playapp/public/ staticDir:public
您正在使用http.path吗?
我认为反向应该考虑到这一点......
嗯,这听起来很简单:如果它在播放应用程序之外,那么您没有使用反向网址,因此只需将绝对路径放入链接中...或者您是否使用反向网址?如果是这样,你能举个例子吗?
归档时间: |
|
查看次数: |
7361 次 |
最近记录: |