前端代理不正确引用资源

时间:2011-05-14 09:43:05

标签: apache apache2 playframework mod-proxy

我在游戏前面运行前端代理时遇到了很多困难。 这篇文章也在google小组上,我会在两者上发布收到的建议。

我正在使用apache和mod_proxy,应用程序应该在“mywebsite.be/dev/app/”位置运行。它能够显示HTML。

但是当我运行应用程序时,所有的CSS / JS /图像都丢失了,所有引用都是不正确的。我查看源代码,似乎Play没有将@ {/ pathname / to / resources}和其他相关链接替换为正确的url。为了让一切正常,所有网址都应该以“/ dev / app”作为前缀。怎么办呢?

我尝试过使用ctxPath,但这不是我需要的,应用程序可以自行运行,但apache2在反向代理中翻译所有这些URL时出现问题。

这可以解决吗?我想在某种程度上在模板系统中编辑@ -operator,但那不可能,对吧?

问候, 碧玉

3 个答案:

答案 0 :(得分:2)

你看过这篇文章吗?我认为这是相关的。

Can not generate correct URLs for static resources with playframework when using Apache as a Proxy

另外,请关注Play 1.2.2,因为这打算解决这个问题,根据我在Play组中读过的帖子。

答案 1 :(得分:1)

我的一个队友想出了答案。这很简单。

如果你有apache2配置,而不是指向localhost root,你只需指向localhost:9000 / dev / app:

ProxyPreserveHost On
RedirectMatch /dev/app /dev/app/
<Location /dev/app/>
AuthType Basic
AuthName "Test Omgeving"
AuthUserFile /var/trac/htpasswd
Require valid-user

ProxyPass http://127.0.0.1:9000/dev/app/
ProxyPassReverse http://127.0.0.1:9000/dev/app/
</Location>

这使得apache2认为你的localhost服务器中有另一个子目录,但事实上,没有任何子目录,但现在它正确引用,因此将所有流量转换为相应的资源。

也许不是做事的优雅方式,但它运作良好:)

感谢所有帮助。希望这篇文章可以帮助那些有前端代理的人。

问候

答案 2 :(得分:0)

我建议您使用代理平衡器,因为如果您计划将来使用多个播放服务器实例,它将有助于平衡您的服务器

 <Proxy balancer://my-balancer>
    Order deny,allow
    Allow from all
    BalancerMember url1:port route=instanceOne
    BalancerMember url2:port route=instanceTwo
    ProxySet lbmethod=bytraffic
    </Proxy>
    ProxyPass /  balancer://my-balancer/

现在它会将您的流量传递到url1:port或url2:port,它还会获取您的图片和其他静态网址