IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Reverse proxy et redirection des sous-domaines


Sujet :

Apache

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 15
    Points : 7
    Points
    7
    Par défaut Reverse proxy et redirection des sous-domaines
    bonjour,

    je souhaiterais faire une redirection de tous mes sous domaines vers une servlet lui correspondant ,

    exemple : ustilisateur1.domain.com -> http://localhost:8080/utilisateur1
    ustilisateur2.domain.com -> http://localhost:8080/utilisateur2

    je suis parvenu a le faire en mode statique en utilisant les virtualhost d'apache:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <VirtualHost *:80>
            ServerAdmin webmaster@localhost
            Servername utilisateur1.domain.com
     
            ProxyPass  http://localhost:8080/utilisateur1
            ProxyPassReverse http://localhost:8080/utilisateur1
            ProxyPreserveHost On
    cependant j'aimerais pouvoir redirigé dynamiquement sans avoir a implémenter ceci pour chaque sous domaine en gros convertir a l'aide d'une regex par exemple le sous domaine "utilisateur1." en context "/utilisateur1"

    ps: et bonne fêtes de fin d'année!

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Il suffit de ne rien mettre, non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
    Comme ça tout ce qui arrive sur le port 80 d'Apache sera renvoyé vers le port 8080.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    salut merci pour ta réponse en ce premier jour de l'an 2012!
    en fait le but et de transformer le sous-domaine en context d'application , chaque requête vers x.domaine.com doit être redirigé sur application local avec le context x : x.domaine.com -> http://localhost:8080/x,
    chaque création de compte sous mon application, cree un context spécifique par utilisateur du genre http://domain.com/utilisateur, j'aimerais que l'utilisateur puisse accéder a son context en utilisant son nom de compte comme sous domaine..

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Ah oui, y a un truc que j'ai zappé. Il faut ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ServerAlias *.domain.com
    mais avec ceci, même www.domain.com sera redirigé sur http://localhost:8080. Je ne sais pas si c'est ce que tu veux. Si ce n'est pas ce que tu veux, crée un autre hôte virtuel pour www.domain.com avec la configuration qui va bien et que tu places avant celui pour les utilisateurs.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    rebonjour,

    en fait le but est de redirigé toto.domain.com vers http://localhost:8080/toto automatiquement sans avoir pour chaque sous domaine a déclarer un alias du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ServerAlias toto.domain.com
    ProxyPass / http://localhost:8080/toto
    ProxyPassReverse / http://localhost:8080/toto
    ------------------
    ServerAlias titi.domain.com
    ProxyPass / http://localhost:8080/titi
    ProxyPassReverse / http://localhost:8080/titi
    en fait s'il était possible de récupérer sous forme de variable "*" dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ServerAlias *.domain.com
    et de l'ajouter a la fin de ses de lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ProxyPass / http://localhost:8080/"varSousDomain"
    ProxyPassReverse / http://localhost:8080/"varSousDomain"
    afin que tous les sous domaines soient automatiquement redirigé vers leurs context:
    *.domain.com -> http://localhost:8080/*
    titi.domain.com -> http://localhost:8080/titi
    tata.domain.com -> http://localhost:8080/tata

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    OK, le champagne embrume encore mon esprit. C'est faisable mais pas avec ProxyPass (voir la dernière phrase de la doc de ProxyPass), il faut passer par mod_rewrite. Donc configure un VH pour *.domain.com avec mod_rewrite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <VirtualHost *:80>
        ServerName toto.domain.com
        ServerAlias *.domain.com
     
        RewriteEngine on
        RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$
        RewriteRule (.*) http://localhost:8080/%1$1 [P]
    </VirtualHost>

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    yeah merci!

    avec le paramétrage suivant j'obtiens le résultat escompté, à peu de chose près!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    <VirtualHost *:80>
        ServerName domain.com
        ServerAlias *.domain.com
        RewriteEngine on
     
        RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$
        RewriteRule (.*) http://127.0.0.1:8080/account/%1 [P]
      <Proxy *>
            Order allow,deny
            Allow from all
          </Proxy>
    ProxyPreserveHost On
    </VirtualHost>
    les sous domaines sont bien redirigé vers leurs context! , dernier hic c'est que je ne parviens plus à accéder aux images du site, qui se situe dans arborescence /resources de mon application "http://locahost:8080/resources/"

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    bon finalement j'ai opté pour la solution suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <VirtualHost *:80>
        ServerName domain.com
        ServerAlias *.domain.com
        RewriteEngine on
    RewriteRule ^(/+)(resources/)(.*) http://127.0.0.1:8080/$2$3 [P,QSA,L]
        RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$
        RewriteRule (.*) <a href="http://127.0.0.1:8080/account/%1" target="_blank">http://127.0.0.1:8080/account/%1</a> [P]
      <Proxy *>
            Order allow,deny
            Allow from all
          </Proxy>
    ProxyPreserveHost On
    </VirtualHost>
    merci pour ton aide _Mac_

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Apache][.htaccess] Redirection de sous domaines
    Par dorian53 dans le forum Apache
    Réponses: 2
    Dernier message: 29/11/2015, 00h20
  2. abrégé déclaration des sous-domaines
    Par talvins dans le forum Apache
    Réponses: 3
    Dernier message: 28/03/2008, 16h04
  3. [Htaccess] Redirection de "sous-domaines"
    Par kevinf dans le forum Apache
    Réponses: 3
    Dernier message: 29/09/2007, 20h45
  4. Gérer des sous domaines ?
    Par DrÿSs dans le forum Réseau
    Réponses: 1
    Dernier message: 26/03/2007, 10h09
  5. [Cookies] Visibilité avec des sous-domaines
    Par kevinf dans le forum Langage
    Réponses: 6
    Dernier message: 06/02/2007, 16h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo