2 votes

Reverse Proxy (mod_rewrite) et Rails (chemins absolus)

J'ai une application Rails frontale, qui renvoie par proxy vers l'une des nombreuses applications Rails dorsales en fonction de l'URL, par exemple

http://www.my_host.com/app_one des proxies inversés pour http://www.remote_host_running_app_one.com

de sorte qu'une URL comme http://www.my_host.com/app_one/users affichera le contenu de http://www.remote_host_running_app_one.com/users

J'ai un grand nombre de backends, qui ne cesse de croître, et ils ne peuvent donc pas être explicitement listés ailleurs que dans une base de données. Ce n'est pas un problème pour mod_rewrite qui utilise un reverse proxy prg:/ rewrite map.

La question est que les urls renvoyées par les aides Rails ont la forme suivante /controller/action en les rendant absolus à la racine. C'est un problème pour la page servie par mod_rewrite parce que les liens sur la page mandatée apparaissent comme absolus au domaine, c'est-à-dire.. :

http://www.my_host.com/app_one/controller/action a des liens qui finissent par ressembler à /controller/action/ quand ils doivent ressembler à /app_one/controller/action

mod_proxy_html semble être la bonne idée, mais il ne semble pas être aussi dynamique que je le voudrais, puisque les règles doivent être codées en dur dans les fichiers de configuration.

Existe-t-il un moyen de corriger ce problème côté serveur, afin que les liens soient acheminés correctement ?

0voto

Stick Points 658

Vous pouvez essayer d'utiliser ProxyPass et ProxyPassReverse.

ProxyPass /app_one http://www.remote_host_runing_app_one.com
ProxyPassReverse /app_one http://www.remote_host_running_app_one.com

Cependant, il est préférable d'exécuter vos applications ruby sous leurs répertoires nommés et de les renvoyer directement par reverse proxy au lieu de faire une réécriture pour changer l'uri.

Vous pouvez vous tourner vers unicorn, passenger ou thin pour exécuter les applications ruby afin d'avoir plus de flexibilité dans leur exécution.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X