开发者

Front-end Proxy does not reference resources correctly

I'm having quite a lot of difficulties with running a frontend proxy in front of play. This post is also on the google group, I'll post the received suggestions on both.

I'm using apache and mod_proxy and the application is supposed to be running in a location "mywebsite.be/dev/app/". It is able to display the HTML.

But when I run the application, all the CSS/JS/images are missing, also all references are incorrect. I look up the source and it seems that Play did not replace the @{/pathname/to/resources} and other relative links to its correct url. In order to let everything work, all urls should be prefixed with "/dev/app". How can this be done?

I tried experimenting with the ctxPath, but that's not what I need, the application runs fine on its own, but apache2 has issues translating all those urls in the reverse proxy.

Can this be solved? I was thinking of somehow editing the @-operator in the templating sy开发者_StackOverflow社区stem, but that can't be it, right?

greetings, Jasper


Have you looked at this post? I think it is related.

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

Also, please keep an eye out for Play 1.2.2, as this intends to solve this problem, according to a post I have read in the Play groups.


One of my teammates came up with the answer. It's quite simple.

If you have your apache2 configuration, instead of pointing to the localhost root, you just point to the 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>

This tricks apache2 in thinking that there is another subdirectory in your localhost server, but in fact, there isn't any, but now it references correctly, therefore translating all trafic to the corresponding resources.

Perhaps not the classy way to do things, but it works fine :)

Thanks for all the help. Hope this post helps other people with frontend proxies out there.

Greetings


i will recommend you use proxy balancer as it will help to balance your servers if you plan to use more than one instance of play server in future

 <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/

now it will pass your traffic to url1:port or url2:port and it will also fetch your images and other static urls

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜