[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Apache et la redirection fonction de l'URL



Patrice OLIVER wrote:
Merci à tous,

Cependant, les exemples de configuration que vous me proposez ne
doivent pas répondre à mon besoin.

Je souhaite saisir dans le navigateur :

http://user.domaine.com et que cela soit l'équivalent de http://serveur:8080
htto://admin.domaine.com et que cela soit l'équivalent de http://serveur:8081

Au niveau DNS, les enregistrements nécessaires sont OK.
Il faudrait donc qu'Apache interprète et transforme les URL/URI qu'il reçoit.

je suppose que apache écoute bien sur le port 80 (sinon, personne ne peut se connecter sur http//user.domaine.com... car le port par défaut est 80).

si les serveurs sont accessibles de l'exterieur (si on peut aller sur http://serveur:8080/...), un http redirect suffit (soit avec mod_rewrite, soit avec un page html contenant un refresh). L'avantage ici est que ça marchera quelque soient les URLs dans les pages servies par les serveurs 8080/1. Le défaut est qu'il faut que ces serveurs soient accessibles, ce qui n'est pas toujours le cas, que ce soit pour des raisons de sécurité ou autre.

Il reste alors mod_proxy. une config type est ci-dessous. Attention à quelques points:

- il vaut mieux que les chemins dans les URL soient les mêmes. on redirige donc /toto/titi... vers /toto/titi... En effet, apache ne réécrit pas toute la réponse http (loin de la). si le serveur final suit les sessions avec le referer ou des chemins dans les cookies, il faut les lui laisser telles qu'il les veut. aussi, si les pages html contiennent des chemins absolus, il faut qu'ils gardent leur sens pour le client. il y a un mod pour réécrire le html, mais c'est un peu lourd (reecrire les pages peut obliger à les cacher puique le content-length peut changer, et de toute façon c'est pas gratuit), et en plus ça ne suffira pas (si les pages servies contiennent du java script, le serveur final peut gueuler en pensant à une attaque s'il n'aime pas le referrer ou les chemins dans les cookies).

- si tu configure l'authentification sur apache, il faut avoir les mêmes login/passwd/mecanisme sur le serveur final. En effet, les entêtes d'authentification ne sont pas supprimées par Apache et pourront être vérifiées par le serveur final.

- dans les pages sur serveur final, il ne faut pas qu'il y ait les URLs http://serveur:8080... évidemment.

== exemple de config:

# apache aime bien qu'on lui dise qu'il y a des vhosts...
NameVirtualHost *:80

<VirtualHost *:80>
ServerName user.domaine.com

#Optionnel: passer le host qui a ete utilise (ici: user.domain.com)
ProxyPreserveHost On

# on envoie tout la-bas
ProxyPass 	 / http://serveur:8080/
# reecriture des URLs de quelques entetes (principalement Location:)
ProxyPassReverse / http://serveur:8080/

## Debugging
#ProxyTimeout   600
#LogLevel       debug
</VirtualHost>

<VirtualHost *:80>
ServerName admin.domaine.com

.... un peu pareil que pour l'autre
</VirtualHost>


pour garder l'esprit Debian, il peut être judicieux de mettre chaque vhost dans son propre fichier, comme ça tu peux activer/desactiver chacun comme tu veux (sites-available/enabled).


Reply to: