1 ip fixe pour 3 serveur web est-ce possible?

Résolu/Fermé
nares - 2 juin 2005 à 17:20
 rider - 23 févr. 2009 à 22:33
Hello tout le monde,

Voilà j'ai une petite colle pour vous car je suis entrain de m'arracher les cheveux :

J'ai 1 ip publique fixe, 3 noms de domaine, 3 serveurs web.

Mon installation :

FreeBox relié sur une des 4 carte réseau de mon routeur. Sur le routeur la redirection des port tcp se fait très bien car mon serveur web (le seul accessible pour l'instant) fonctionne avec la redirection du port 80 vers ip du serveur. De plus avec apache le virtual host fonctionne à merveille car je peux ajouter autant de nom domaine que je veux sur ce serveur avec autant de page web différentes.

Mais voilà ce que j'aimerai faire c'est pouvoir répartir les 3 pages web sur 3 serveurs différent de mon réseau en sachant qu'on ne peut rediriger un seul port vers une seule ip. En mettant en place mon serveur DNS sous 2000 server çà ne donne rien. Le virtual host sous apache (bien entendu sous linux) de mon serveur frontal ne semble pas rediriger les url vers le bon serveur.

Alors comment faire?????? quelqu'un a une solution.

8 réponses

[Andrew] Messages postés 1 Date d'inscription samedi 24 juin 2006 Statut Membre Dernière intervention 24 juin 2006 2
24 juin 2006 à 06:05
Le plus simple est d'utiliser la commande RewriteRule.
Vérifies que les modules suivants sont activés :

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so

Ensuite dans tes VirtualHost active le rewrite et surtout entre le bonne syntaxe. Tu peux forwarder vers n'importe quel IP/port dans ton LAN.
<VirtualHost domaine1.com>
ServerName domaine1.com
RewriteEngine On
RewriteRule ^/(.*) \http://IP_DE_TA_MACHINE1:80/$1 [P]
</VirtualHost>

<VirtualHost domaine2.com>
ServerName domaine2.com
RewriteEngine On
RewriteRule ^/(.*) \http://IP_DE_TA_MACHINE2:80/$1 [P]
</VirtualHost>

Voilà, c'est complètement transparent pour le client car c'est apache qui discute avec les autres serveurs web dans ton LAN. Ton client n'a pas besoin d'accéder aux autres serveurs.
Apache reste en frontal et dispatch, pas besoin d'ouvrir d'autres ports que le 80.

Andrew
3
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
24 juin 2006 à 06:53
J'adore ce module RewriteRule...
Depuis que j'ai vu les possibilités de Load Balancing avec ce truc, j'en suis baba....
0
Bonjour,

ça fait plaisir de trouver enfin une réponse à ce problème !
Cependant voici une question complémentaire:

J'ai installé le package apache_mod_proxy afin de bénéficier des modules:
mod_proxy.so
mod_proxy_http.so

Ces derniers ont été inscrits dans le fichier httpd.conf conformément aux directive:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so

Mon problème est qu'au moment d'appliquer les changements, j'ai le message d'erreur suivant:
Impossible d'appliquer les changements :
httpd: Syntax error on line 237 of /etc/httpd/conf/httpd.conf: LoadModule takes two arguments, a module name and the name of a shared object file to load it from

hum ... désolé mais pouvez-vous m'expliquer d'où cela pourrait venir ?
Merci d'avance, j'ai hâte de voir le résultat des courses une fois ce cap passé !

Philippe
0
Re bonjour,
Non, désolé. C'est de ma faute ! Les modules mod_proxy et mod_proxy_http étaient déjà chargés donc erreur normale.

En revanche ...

<VirtualHost domaine2.com>
ServerName domaine2.com
RewriteEngine On
RewriteRule ^/(.*) \http://IP_DE_TA_MACHINE2:80/$1 [P]
</VirtualHost>

... n'a pas fait le boulot prévu.
Impossible d'obtenir le site hébergé sur une autre machine du LAN (tous les problèmes de parefeu étant analysés)
0
kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 501
2 juin 2005 à 17:50
Mais voilà ce que j'aimerai faire c'est pouvoir répartir les 3 pages web sur 3 serveurs différent de mon réseau en sachant qu'on ne peut rediriger un seul port vers une seule ip.

Ca c'est simplement impossible si tout le monde est derrier un routeur NAT (comme la Freebox en mode routeur).

Par contre tu peux faire 3 pages webs sur un seul serveur en utilisant les trois domaines. Tu peux definir dans le fichier httpd.conf de choses comme:
ServerName www.nom1.domaine1.fr
ServerAlias www.nom1
ServerPath /chemin1/
DocumentRoot /home/nom1/
...
ServerName www.nom2.domaine2.fr
ServerAlias www.nom2
ServerPath /chemin2/
DocumentRoot /home/nom2/
...
ServerName www.nom3.domaine3.fr
ServerAlias www.nom3
ServerPath /chemin3/
DocumentRoot /home/nom3/
...

et deposer dans /home/nom1/..., /home/nom2/..., /home/nom3/... les fichiers index.html etc. pour chaque page web. J'ai choisi ces noms et l'endroit /home/... a titre exemple, en principe tu peux faire comme tu veux mais /home/... me semble en effet un bon endroit pour faire ca. Tu peux meme creer d'utilisateurs differents pour chaque page web (avec /hom/nom?/... comme repertoire home) qui auront la responsabilite de gerer les differents pages.

Apres il faut rediriger toutes tes domaines vers ton numero IP Free (un truc comme "nickname" ?) et rediriger le port 80 vers la machine qui fait serveur.

Pour les details il te faut etudier la doc d'apache (peut-etre dans apache 2.0 la syntax est un peu differente mais c'est certainement possible).
0
Merci pour ta réponse mais c'est ce que j'ai actuellement les 3 nom domaine pointe sur mon serveur web sur lequel j'ai renseigné dans http.conf les 3 nom de domaine. Il n'y a réellement rien à faire même avec un serveur DNS (bind) sous linux en associant le virtualhost de apache?
0
kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 501
2 juin 2005 à 19:09
Tu peux bien sur faire tourner les differents serveurs http sur differents ports tcp, donc pas forcement le 80 mais 81 ou 82 ou 8080, ... Dans ce cas il n'y a aucun probleme pour rediriger les ports. Tu peux meme faire:
port 80 internet => port 80 pc1 derriere le routeur
port 81 internet => port 80 pc2 derriere le routeur
port 82 internet => port 80 pc3 derriere le routeur

(mais l'utilisation de 81, 82 sur pc2 ou pc3 serait aussi tres facile avec la bonne option d'apache)

Le seule probleme que je vois, comment assurer que tes visiteurs mettent le bon port dans le navigateur ? Normalement on tape http://www.domaine.fr:81 pour acceder au http par le port 81 mais qui va faire ca ? Je n'en connais rien mais on ne peut pas associer le port a un domaine ??? Genre: domaine1 => port 80 et domaine2 => port 81. Si c'est possible tu as gagnes mais honnetement je ne le crois pas possible.

Peut-etre tu peux aussi faire une espece de proxy sur un pc qui redirige les requetes http vers les autres pcs. Ca revient a une solution plutot intermediaire. Pour ca je ne connais pas de details ni c'est vraiement possible (mais je suppose que oui).

Le probleme principale est qu'il faut faire le tri entre les differents domaines qui utilisent tous le meme numero IP! Meme si tu programes toi meme le routeur NAT (enlever le mode routeur de la Freebox et mettre un pc linux comme routeur entre Freebox et les autres pcs, avec switch et deux cartes reseau) tu peux faire de regles de filtrage avec iptables pour le forward en utilisant le numero IP et les ports mais je ne sais pas comment dire a iptables de faire le tri pour le domaine.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,

On peut aussi configurer un serveur comme reverse proxy. Il reçoit tous les appels et les ventile vers les serveurs concernés (y compris lui-même si besoin) en faisant des translations d'URL On peut configurer Apache en reverse proxy.

Manu
0
Merci pour les conseils mais comment pourrais-je le paramétrer ce fameux proxy.
Ah oui j'ai oublié de dire que ma freebox elle me sert que pour l'interconnexion de mon LAN sur le WAN et mon routeur est un pc sur lequel j'ai mis 4 cartes réseau et j'ai mis IpCop (une distrib linux pour tranformer un pc en routeur).
0
Bonjour,

Pour un reverse proxy, tu donnes les correspondances entre ce qui entre et ce qui sort. Par exemple (non écrit dans la syntaxe d'Apache pour faciliter l'explication)

entrée 1 : http://site1.com/jobs/* (* = nimporte quelle arborescence)
sortie 1 : http://10.20.20.20/* (* = ce qui est représenté par * en entrée)
entrée 2 : https://site2.com/login/*
sortie2 : http://10.30.30.30/login/* (nb pas de sortie en https)
entrée 3 : http://site1.com/support/* (autre arborescence dans site1)
sortie3 : http://10.30.30.30/support/* (servi par le serveur en .30)

J'ai supposé que site1.com et site2.com sont deux noms renvoyés sur la même adresse IP, elle-même dirigée vers le reverse proxy, et que ton réseau local est en adresses privées.

Bien sûr si tu mets un reverse proxy et un serveur web sur la même machine, tu réserveras les ports 80 et 443 au reverse proxy, et le serveur web sur un autre port.

Manu
0
cherche du coté de "pound" le meilleur reverse proxy libre que je connaisse aprés il faut une machine sous linux dédiée.
Bon courage.
0