Bonjour,

Je vous explique la situation :
J'ai un serveur apache derrière un NAT, et parfois je connecte mon laptop dans le réseau local.
Avec un no-ip je redirige bien les requêtes à destination de celelaptop.exemple.com vers mon réseau NATé.
Comme le serveur est sur la DMZ, y'a pas de problème, il reçoit toutes les connexions.
Avec le mod_proxy sur le serveur j'ai réussi à rediriger toutes les requêtes ayant pour host celelaptop.exemple.com vers mon laptop.


La configuration du vhost du serveur ressemble à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<VirtualHost *>
        ServerName celelaptop.exemple.com
        ServerAlias *.celelaptop.exemple.com
 
        ProxyRequests Off
        ProxyPass / http://192.168.1.120/
        ProxyPassReverse / http://192.168.1.120/
</VirtualHost>
Comem vous pouvez le voir, il y a un ServerAlias parce que je met des sous-sous-domaine pour chaque projet.

Le problème c'est qu'avec cette configuration, l'en-tête host de la requête envoyée à mon laptop contient 192.168.1.120. En clair il effectue une requête http://192.168.1.120/[reste de l'adresse]. Et donc les vhosts de mon laptop ne sont pas fonctionnels.

Une solution serait pour chaque vhost de mon laptop, mettre un vhost sur le serveur, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<VirtualHost *>
        ServerName modelixe.celelaptop.exemple.com
 
        ProxyRequests Off
        ProxyPass / http://modelixe.celelaptop.exemple.com/
        ProxyPassReverse / http://modelixe.celelaptop.exemple.com/
</VirtualHost>
Mais si je dois rajouter un vhost sur le serveur chaque fois que j'en crée un nouveau sur mon laptop, je suis pas sorti de l'auberge.

Une solution qui me paraît potable serait d'utiliser le fait que le mod_proxy rajoute l'en-tête X-Forwared-Host aux requêtes, et donc rajouter sur mon laptop une directive pour chaque vhost pour lui dire de regarder soit le header host, soit le header x-forwarded-host.

À votre avis c'est faisable ? Si oui, comment ?
Si non, vous avez une autre solution ?