Forum Linux.général Apache, mod_proxy et virtual host

Posté par  .
Étiquettes : aucune
0
15
nov.
2005
Je viens de mettre en place 2 serveurs, un serveur interne apache qui contient 2 hôtes virtuels basés sur le DNS : test1.inside et test2.inside.

J'ai de plus mis en place un serveur proxy apache2 qui s'occupe de publier de publier les sites sur internet. J'ai donc configuré un hôte virtuel test1.outside sur apache2 et y ai configuré le mod_proxy.

Donc, de l'extérieur, si je connecte mon browser sur test1.outside, alors je peux visualiser le site test1.inside. Et je ne peux pas joindre test2.inside car je n'ai pas défini test2.outside.

Le problème est que si je me connecte avec telnet sur le port 80 de mon proxy (telnet test1.outside 80) et que je demande la page test2.inside (GET http://test2.inside/ HTTP/1.0), j'obtiens la page du site test2.inside !

Une idée sur mon problème ?
  • # Je vois, je vois...

    Posté par  . Évalué à 2.

    Rien. Ma boule de cristal est un peu brumeuse, ca doit être la météo :).

    Bon a priori le problème vient de la configuration de ton proxy apache2 qui est trop ouvert ? Tu n'a pas dit clairement quel était le résultat que tu espérais. Le test que tu effectue tu le fais depuis ton intranet ou depuis une machine externe ? Tu as défini des virtualhosts par nom, par ip ?

    A vue de nez je dirais que tu as fait des déclarations globales de Proxy sur le proxy apache. Bref donne ta configuration complète ca devrait aller mieux.

    Juste une idée : c'est bien un reverse proxy que tu veux ? Dans ce cas as tu bien mis ProxyRequests=off dans ta conf ?

    --
    Thomas
    • [^] # Re: Je vois, je vois...

      Posté par  . Évalué à 2.

      * Sur le serveur proxy (apache2 + mod_proxy )

      NameVirtualHost *:80

      <VirtualHost *:80>
      ServerName test1.outside
      ProxyRequest On
      <Proxy *>
      order...
      </Proxy>
      ProxyPass / http://test1.inside/
      ProxyPassReverse / http://test1.inside/
      </VirtualHost>

      * Sur le serveur web (apache1.3 sous windows)

      NameVirtualHost *:80

      <VirtualHost *:80>
      ServerName test1.inside
      </VirtualHost>

      <VirtualHost *:80>
      ServerName test2.inside
      </VirtualHost>

      En fait ma démarche est la suivante. En interne, j'installe un serveur web supportant php. Donc tout ce qui veut fonctionner avec PHP doit être installé sur ce serveur.
      De plus, certains sites du serveur interne doivent pouvoir être accessible depuis l'internet. C'est pour cela que j'ai rajouté un serveur en frontal avec apache2 + mod_proxy pour publier les sites que je désire.
      Pour séparer les sites entre eux (sur le serveur interne), j'utilise des virtual hosts.
      Par exemple, sur mon serveur interne, j'ai deux sites : test1 et test2 (dans le domaine inside). Et je veux que test1 soit accessible depuis l'internet, donc j'ai déclaré un virtualhost test1.outside sur le serveur apache2 pour proxyfier le site. Mais, ma configuration ouvre toutes les portes (j'ai effectué le test depuis un PC situé sur internet (chez moi en gros)).

      J'ai essayé d'utiliser la directive ProxyBlock test2 , mais ça bloque tout !
      • [^] # Re: Je vois, je vois...

        Posté par  . Évalué à 4.

        oui bah en fait c'est le ProxyRequest On qui n'était pas bon. En le mettant à off, si je fais :

        telnet test1.outside 80
        > GET http://test2.outside/ HTTP/1.0

        la page retournée est bien celle de test1.inside

        Merci pour ton aide.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.