我在游戏前面运行前端代理时遇到了很多困难。 这篇文章也在google小组上,我会在两者上发布收到的建议。
我正在使用apache和mod_proxy,应用程序应该在“mywebsite.be/dev/app/”位置运行。它能够显示HTML。
但是当我运行应用程序时,所有的CSS / JS /图像都丢失了,所有引用都是不正确的。我查看源代码,似乎Play没有将@ {/ pathname / to / resources}和其他相关链接替换为正确的url。为了让一切正常,所有网址都应该以“/ dev / app”作为前缀。怎么办呢?
我尝试过使用ctxPath,但这不是我需要的,应用程序可以自行运行,但apache2在反向代理中翻译所有这些URL时出现问题。
这可以解决吗?我想在某种程度上在模板系统中编辑@ -operator,但那不可能,对吧?
问候, 碧玉
答案 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,它还会获取您的图片和其他静态网址