Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/12/2011, 13h46   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 15
Points : 1
Points : 1
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 :
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!
sfair est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2012, 14h59   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 299
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 299
Points : 8 583
Points : 8 583
Il suffit de ne rien mettre, non ?
Code :
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.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2012, 16h22   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 15
Points : 1
Points : 1
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..
sfair est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2012, 17h33   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 299
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 299
Points : 8 583
Points : 8 583
Ah oui, y a un truc que j'ai zappé. Il faut ajouter
Code :
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.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2012, 19h24   #5
Invité de passage
 
Inscription : décembre 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 15
Points : 1
Points : 1
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 :
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 :
ServerAlias *.domain.com
et de l'ajouter a la fin de ses de lignes :
Code :
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
sfair est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2012, 21h54   #6
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 299
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 299
Points : 8 583
Points : 8 583
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 :
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>
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/01/2012, 11h50   #7
Invité de passage
 
Inscription : décembre 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 15
Points : 1
Points : 1
yeah merci!

avec le paramétrage suivant j'obtiens le résultat escompté, à peu de chose près!
Code :
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/"
sfair est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 15h09   #8
Invité de passage
 
Inscription : décembre 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 15
Points : 1
Points : 1
bon finalement j'ai opté pour la solution suivante:

Code :
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 (.*) http://127.0.0.1:8080/account/%1 [P]
  <Proxy *>
        Order allow,deny
        Allow from all
      </Proxy>
ProxyPreserveHost On
</VirtualHost>
merci pour ton aide _Mac_
sfair est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h44.


 
 
 
 
Partenaires

Hébergement Web