2 votes

Le proxy frontal ne référence pas correctement les ressources

J'ai beaucoup de difficultés à faire fonctionner un proxy frontal en face de play. Ce post est aussi sur le groupe google, je vais poster les suggestions reçues sur les deux.

J'utilise apache et mod_proxy et l'application est censée s'exécuter dans un emplacement "mywebsite.be/dev/app/". Elle est capable d'afficher le HTML.

Mais lorsque je lance l'application, tous les CSS/JS/images sont manquants, et toutes les références sont incorrectes. Je regarde la source et il semble que Play n'a pas remplacé le @{/pathname/to/resources} et d'autres liens relatifs à son url correct. Pour que tout fonctionne, toutes les urls devraient être préfixées par "/dev/app". Comment cela peut-il être fait ?

J'ai essayé d'expérimenter avec le ctxPath, mais ce n'est pas ce dont j'ai besoin, l'application fonctionne bien toute seule, mais apache2 a des problèmes pour traduire toutes ces urls dans le reverse proxy.

Cela peut-il être résolu ? Je pensais modifier d'une manière ou d'une autre l'opérateur @ dans le système de création de modèles, mais ça ne peut pas être ça, n'est-ce pas ?

salutations, Jasper

2voto

Codemwnci Points 28817

Avez-vous regardé ce post ? Je pense qu'il est lié.

Impossible de générer des URL correctes pour les ressources statiques avec playframework en utilisant Apache comme proxy

Par ailleurs, gardez à l'œil la version 1.2.2 de Play, qui devrait résoudre ce problème, d'après un message que j'ai lu dans les groupes Play.

1voto

Jasper Points 223

Un de mes coéquipiers a trouvé la réponse. C'est très simple.

Dans votre configuration apache2, au lieu de pointer vers le Root localhost, vous pointez simplement vers le 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>

Cela fait croire à apache2 qu'il y a un autre sous-répertoire dans votre serveur localhost, mais en fait, il n'y en a pas, mais maintenant il se référence correctement, traduisant ainsi tout le trafic vers les ressources correspondantes.

Ce n'est peut-être pas la façon la plus élégante de faire les choses, mais cela fonctionne bien :)

Merci pour toute l'aide apportée. J'espère que ce post aidera d'autres personnes avec des proxies frontaux.

Salutations

0voto

RamIndani Points 69

Je vous recommande d'utiliser un équilibreur de proxy car il vous aidera à équilibrer vos serveurs si vous prévoyez d'utiliser plus d'une instance du serveur de jeu à l'avenir.

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

maintenant, il transmettra votre trafic à url1:port ou url2:port et il récupérera également vos images et autres urls statiques.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X