Forum Linux.debian/ubuntu Apache 2 (Mod proxy + mod rewrite)

Posté par  (site Web personnel) .
Étiquettes : aucune
0
20
mai
2008
Bonjour !

Je voulais savoir si il était possible via les modules apache (apache 2.0 sur Debian) de rediriger des urls via mod proxy mais pas de la manière la plus classique. Je m'explique :

J'ai un domaine qui catch-all tout les sous domaines vers la même ip.

Je souhaite rediriger des hosts comme http://XXXX.domain.org/ vers http://XXXXX.localhost:YYYY/ donc en local ou YYYY est un port arbitraire. Mais que cela se fasse de manière transparente, l'utilisateur ne doit pas se retrouver directement sur http://XXXXX.localhost:YYYY/ (qui ne fonctionnera pas sauf en local :p).
J'espère que je me suis bien expliqué.

Merci d'avance pour vos réponse et a bientôt.
  • # pourquoi ?

    Posté par  . Évalué à -3.

    pourquoi tant de haine ?

    je suppose que c'est parce que tes differents sites ecoutent sur different port...

    alors qu'un simple virtualhost serait suffisant

    <virtualhost *>
    Servername xxxx.domain.com
    DocumentRoot /path/to/your/directory
    Options [...]
    </virtualhost>


    mais j'ai peut-etre pas toutes les infos necessaires pour comprendre le besoin.
    • [^] # Re: pourquoi ?

      Posté par  . Évalué à 2.

      Ah cette bonne vieille habitude de toujours vouloir dire "comment qu'on devrait faire selon son point de vue" plutôt que de répondre à la question de base...
      Et si il a un tomcat qu'il ne veut pas mettre en frontal ?
      Ou un mldonkey qui implémente son propre httpd ?
      Ou un serveur qu'il développe lui même ?

      D'ailleurs il le dit:

      l'utilisateur ne doit pas se retrouver directement sur http://XXXXX.localhost:YYYY/ (qui ne fonctionnera pas sauf en local :p).


      Sinon oui, on peut faire à la fois du mod_rewrite et du mod_proxy très simplement, il suffit d'ajouter le flag [P] à la fin de ta rewrite rule comme expliqué ici: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewrit(...)
      Je te laisse te creuser un peu la tête pour la règle, mais ça devrait donner un truc du genre:


      RewriteCond %{HTTP_HOST} (.*).domain.org
      RewriteRule ^(.*)$ %1.localhost:YYYY$1 [P]


      La RewriteCond te permettant de récupérer la première partie de l'url et de la mémoriser dans %1, la RewriteRule réécrivant tout URI vers localhost en faisant soi même la requête ( flag [P] ).
      • [^] # Re: pourquoi ?

        Posté par  (site Web personnel) . Évalué à 1.

        Merci beaucoup je vais essayer mais ça ma l'air d'être exactement ce que je cherchais, effectivement je code un serveur http un peu spécial derrière en fesant passer l'utilisateur par le port 80 mais déjà un apache...

        Merci encore !
      • [^] # Re: pourquoi ?

        Posté par  (site Web personnel) . Évalué à 2.

        Est-ce qu'on peut faire :

        <VirtualHost *>
        Servername xxxx.domain.org

        ProxyRequests Off

        <Proxy *>
        Order deny,allow
        Allow from all



        ProxyPass / http://XXXXX.localhost:YYYY/
        ProxyPassReverse / http://XXXXX.localhost:YYYY/
        </VirtualHost>


        Si oui, quelle est la différence avec un RewriteRule avec [P] ? (à part bien sûr le cas où l'on veut que ça marche pour n'importe quel XXXXX dans quel cas ça devient très rapidement lourd de traiter tous les cas :D)
        Mais je me demandais si ça changeait autre chose ?
        • [^] # Re: pourquoi ?

          Posté par  . Évalué à 1.

          Bein voilà, ici le but était d'avoir un xxxx qui varie, ce qui est relou au cas par cas, sinon il y a dans l'absolu pas trop trop de différences si ce n'est peut être au niveau des perfs (les rewriterule doivent certainement consommer un peu :p).
          Enfin, tout ça c'est mon avis perso, après je ne suis pas non plus un guru Apache :p

Suivre le flux des commentaires

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