[Résolu] VirtualHost et RewriteRule

VirtualHost et RewriteRule [Résolu] - HTML/CSS - Programmation

Marsh Posté le 23-10-2010 à 19:57:23    

Bonjour,
 
J'ai un souci conceptuel! Je suis un (presque!) noob en configuration complexe d'Apache.  
J'ai parcouru certains threads du forum traitant des RewriteRule, la doc chez Apache.org
Je comprends bien les concepts des Rewrite d'URL à la volée, mais sur ce cas concret, je sèche...  
 
Dans le cadre d'une prestation je dois installer un serveur Web déjà tout pré-paramétré. C'est très confortable jusqu'à un certain point: lorsqu'on arrête la phase de test en interne pour basculer sur les accès externes.
 
Le contexte technique est le suivant:

  • Pas d'hébergement externe, le serveur tourne sur un linux dans le LAN, avec un nom FQDN type srv.dom.int.
  • Pas de nom de domaine externe réservé ou d'adresse IP publique externe réservée: un dyndns pointe vers le routeur et une translation NAT de port amène les visiteurs WAN sur la bonne IP interne et le port HTTPS 443.


Depuis que j'installe (benoîtement, sans me compliquer la vie) des serveurs Apache, je n'ai jamais rencontré aucun souci entre les accès internes et externes. Pas plus que lorsque les ports sont translatés par du NAT. Donc, normalement, que l'on fasse:

On accède aux pages et Apache de tout s'occupe! Sur le navigateur, l'URL reste bien:

Ceci sans que je n'ai paramétré quoi que ce soit.
 
Or, le site Web tout pré-paramétré est géré dans un VirtualHost qui récupère tous les accès en HTTPS par la directive:

NameVirtualHost *:443
<VirtualHost *:443>
...
</VirtualHost>

A l'intérieur, ils ont placé une directive RewriteRule qui force le nom de site/domaine des pages??? Telle que:

RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/https/srv.dom.int:443/$1 [L,P]

Tout fonctionne en interne, mais, forcément quand on accède de l'extérieur, on démarre par l'URL https://my.dyndns.org:9999 en premier et ça bloque puisque le serveur renvoie une URL de page en https://srv.dom.int ... Si je change la RewriteRule par:

RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/https/my.dyndns.org\:9999/$1 [L,P]

Ca fonctionne alors très bien depuis l'extérieur mais plus du tout en interne.
 
Mes questions sont les suivantes:

  • A quoi sert ce genre de RewriteRule?!?! Puisque lorsqu'on ne paramètre rien, Apache, de lui-même, s'occupe de garder correctement la base de l'URL d'origine.
  • Comment garder intègre le plus possible le serveur (puisque normalement je ne suis pas censé farfouiller dedans!) pour obtenir des accès cohérents entre requêtes internes et externes?


Merci par avance de vos conseils


Message édité par mikeleetoris le 24-10-2010 à 03:28:39
Reply

Marsh Posté le 23-10-2010 à 19:57:23   

Reply

Marsh Posté le 24-10-2010 à 00:16:15    

Il s'agit d'un mécanisme de "reverse proxy", c'est à dire qu'Apache n'est qu'un proxy et qu'il va déléguer le travail à un autre serveur (par exemple: Zope). Un lien expliquant la syntaxe: http://wiki.zope.org/zope2/ZopeAnd [...] ostmonster
 
Je serais tenté d'essayer de cumuler les 2 RewriteRule.


---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
Reply

Marsh Posté le 24-10-2010 à 03:09:35    

philippe06 a écrit :

Il s'agit d'un mécanisme de "reverse proxy", c'est à dire qu'Apache n'est qu'un proxy et qu'il va déléguer le travail à un autre serveur (par exemple: Zope).

Ah ben c'est exactement ça! J'aurais dû le préciser dans le contexte technique. Le serveur tout pré-paramétré est en fait un serveur Zope + Python avec Apache en frontal. Merci pour le lien.

Citation :

Je serais tenté d'essayer de cumuler les 2 RewriteRule.


C'est ce que j'ai tenté, mais ça ne fonctionne pas... Lorsque je mets ces directives, j'atterris sur la page bidon d'Apache "It works!", mais jamais dans la partie gérée par Zope.

RewriteCond %{HTTP_HOST} ^my.dyndns.org$
RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/https/my.dyndns.org\:9999/$1 [L,P]
RewriteCond %{HTTP_HOST} ^srv.dom.int$
RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/https/srv.dom.int:443/$1 [L,P]

En fait, CA MARCHE!!!!
merci encore pour ton lien, car ils précisaient que l'on peut activer un logging pour les règles de Rewrite. Grâce à cela, j'ai compris que l'URL c'est le nom + le port, ma règle pour l'accès externe doit s'écrire:

RewriteCond %{HTTP_HOST} ^my.dyndns.org\:9999$

pour être bien vérifiée et validée.
Merci encore!


Message édité par mikeleetoris le 24-10-2010 à 03:31:20
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed