前端代理未正确引用资源



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

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

但是当我运行应用程序时,所有 CSS/JS/图像都丢失了,所有引用也不正确。我查找了源代码,似乎 Play 没有替换 @{/pathname/to/resources} 和其他指向其正确网址的相对链接。为了让一切正常,所有网址都应该以"/dev/app"为前缀。如何做到这一点?

我尝试尝试使用 ctxPath,但这不是我所需要的,应用程序本身运行良好,但 apache2 在反向代理中翻译所有这些 url 时存在问题。

这能解决吗?我正在考虑以某种方式编辑模板系统中的@运算符,但这不可能,对吧?

问候碧玉

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

使用 Apache 作为代理时,无法使用 playframework 为静态资源生成正确的 URL

另外,请留意Play 1.2.2,因为这旨在解决这个问题,根据我在Play组中阅读的一篇文章。

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

如果你有你的 apache2 配置,而不是指向 localhost 根,你只需指向 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 认为您的本地主机服务器中还有另一个子目录,但实际上没有任何子目录,但现在它正确引用,因此将所有 trafic 转换为相应的资源。

也许不是优雅的做事方式,但它工作得很好:)

感谢您的所有帮助。希望这篇文章可以帮助其他人使用前端代理。

问候

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

 <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,它还会获取您的图像和其他静态 URL

最新更新