Forum Programmation.web Plusieurs serveurs, une ip

Posté par  (site web personnel) .
Étiquettes : aucune
0
10
août
2005
Bonjour

J'ai installé (sur une mdk 2005LE) kolab + horde (qui tournent impécable dans un "chroot" du fait de openpkg). Le serveur utilise naturellement mon ip et les ports 80 et 443 sur un apache 1.3.
J'ai également un autre serveur apache (2 cette fois) que j'utilise pour d'autres sites, avec php5, ...
J'aimerais garder ces sites indépendamment de kolab pour pouvoir tester sans risques, casser un peu tout mais sans risquer de toucher à kolab ou horde.

Mais voilà, je ne peux pas utiliser deux serveurs sur le même port sur la même ip (à quand les abonnements adsl avec 2ip fixes ? ;-))

Pour le moment ce que je fais c'est que l'un (kolab) tourne sur 80 et 443 et l'autre sur 8080.
Le premier serveur redirect vers 8080 sans prob.
Mais je voudrais masquer le ':8080' dans l'adresse... et je n'y arrive pas.
Je pensais faire ça avec le mod_rewrite mais je n'y arrive pas du tout... :(

J'ai rajouté un passage du type :

RewriteCond %{SERVER_PORT} !^80$
RewriteRule ~/(.*) http://monnomdedomaine/$1(...) [R]

Mais il n'y fait rien...

Donc voilà, si certains ont des idées... merci d'avance
  • # Utiliser une passerelle ?

    Posté par  . Évalué à 1.

    Bon, je ne suis pas spécialiste en la matière, mais je dirai qu'en passant par une passerelle bien configurée au niveau des dns et du routage, tu devrais pouvoir facilement détecter le serveur à utiliser en te basant sur le nom de domaine, genre:
    prout.com -> serveur 1
    pwet.com -> serveur 2

    Ou même:
    serveur1.pwet.com -> serveur 1
    serveur2.pwet.com -> serveur 2

    Voili voilou
    • [^] # Re: Utiliser une passerelle ?

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

      oui mais le problème c'est que j'ai pas de passerelle (simplement un serveur dans la dmz de la freebox) et que j'ai un seul serveur... donc je ne peux pas rediriger vers deux serveurs.

      Sinon j'essai aussi en configurant apache en reverse proxy mais j'y arrive pas totalement...
      • [^] # Re: Utiliser une passerelle ?

        Posté par  . Évalué à 1.

        Oups excuse-moi, je pensais que tu avais 2 serveurs physique.
        Dans ce cas une passerelle aurait été facile à trouver, on en trouve même au bord des routes maintenant ^^
  • # Virtual host

    Posté par  . Évalué à 1.

    Regarde au niveau de la configuration de Apache et des Virtual hosts, tu devrais trouver ton bonheur.

    En résumé, tu définis 2 domaines (serveur1.toto.fr et serveur.toto2.fr) qui pointent sur une même IP.
    Au niveau de apache, tu définis 2 virtual hosts (httpd.conf) pour
    serveur1.toto.fr > document_root qui pointe sur kolab
    serveur2.toto.fr > document_root qui pointe sur dev php5

    Je ne connais pas kolab mais je pense que ça peut être une piste.

    • [^] # Re: Virtual host

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

      j'y avait pensé, mais ça ne marche pas non plus.
      D'une part je veux que ce soit transparant (donc pas de serveur1.xxx serveur2.xxx)
      D'autre part document_root ne permet "que" de changer la racine et ne permet pas de changer de serveur (car je veux garder deux serveurs)

      Mais c'est une solution de "secours"
      • [^] # Re: Virtual host

        Posté par  (site web personnel) . Évalué à 3.

        moi je dis: impossible.

        la seule solution de co hebergement de plusieur sites web derriere la meme IP PUBLIQUE est de tout mettre sur le meme server apache (eventuellement en load balancing ou round robin), via les vhosts.
        • [^] # Re: Virtual host

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

          pourquoi impossible ??

          rien n'empèche de mettre plusieurs serveur sur la même ip publique, il suffit de pouvoir filtrer et rediriger (et c'est là que je coince)

          Il est évident que tout passera par un élement commun (squid, apache dans mon cas, ...)

          Mais il n'est pas impossible de faire ceci.
          Et c'est d'ailleur là l'intéret (que je veins de découvrir) des reverse proxy.
          Mais je bute encore sur certains points...
          • [^] # Re: Virtual host

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

            ouai ... on en a deja debattu plusieur fois ici meme: vu le niveau du mec qui poste, il y arrivera jamais.

            meme les entreprises qui veulent faire ca on BEAUCOUP de mal.

            ca necessite beaucoup de reflechissage. Trop de temps a passer.

            c est plus vite fait d acheter une 2e cnx, ou un bon gros server avec un apache vhost.
            • [^] # Re: Virtual host

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

              vu le niveau du mec qui poste, il y arrivera jamais

              Merci, le mec qui poste c'est moi !
              Et qu'est-ce qu'il a mon niveau ?
              Si j'étais expert en apache, évidemment je ne poserais pas la question...

              j'y arriverai jamais ? et pourquoi donc ? parce qu'une personne me dit que c'est impossible, qu'il faut réfléchir ? sans ça, ça ne serait pas intéressant

              on en a deja debattu plusieur fois ici meme

              Des liens ? parce que j'ai pas trouvé grand chose, juste deux topics dans les forums dont je me suis en partie inspiré, mais je recherche tout document me permettant d'avancer.

              Je me tappe aussi les doc apaches, c'est pas parce que je suis pas expert apache et que je poste dans un forum que j'essai pas par moi-même non plus...


              Mais au final, ça marche quand même (à qq truc prets)

              J'ai pas réussi à faire exactement ce que je voulais alors je passe par un mix virtualhost et proxy.
              J'ai donc plusieurs hotes avec des noms différents (des sous domaines)

              Je redirige donc sur une deuxième serveur ce qu'il faut, sur la même ip, le tout transitant que sur du 80 et 443.

              Le seul problème que j'ai c'est dans les cas où j'ai une arboresence commune sur les deux serveurs, à ce moment là il se plante un peu...
              par exemple j'ai /admin qui ne doit pas être redirigé et /admin/phpMyAdmin qui doit l'être
              Et ça ne marche pas pour le moment.

              De plus, si les directives du genre proxypass /admin ! et proxypassreverse /admin ! ne me faisaient pas une erreur 400, je pourrai me passer de virtualhost et alors tout marcherait sans problème.


              Bien sur je peux acheter une deuxième machine, je vais également installer une deuxième ligne pour avoir une autre ip, c'est ça la solution ?
              Je ne suis pas très sur...
              Si les boites ont des problèmes c'est probablement que leur archi est autrement plus complexe...
              • [^] # Re: Virtual host

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

                on en avais debattu fin juin, chrcher dans mes vieu reply (le sujet n etait pas de moi).

                La methode la plus simple est de passer par un mod-rewrite qui reconstruit completement l URL, et substitue le nom du site par l IP locale de l autre server.

                sinon, tu peux creer un site local qui ne contient qu un .htaccess qui redirige des 404 vers un scripts CGI qui accede a l autre server web local.

                Dans les deux cas, je refuse d implementer les solutions car ca veut dire que le deuxieme server ne peut etreaccede que via le premier, et vu la fiabilite des alims et disque durs de PC de particuliers (je pense pas que tu aies 4 alims redondantes sur anduleur inline, avec 2 chaines SCSI redondantes en RAID5 de 14 disques chacune), je trouve qua l probabilite de downtime est deja tres haute sur mes servers prives; si un sever depend d un autre, le downtime monte exponentiellement.

                Ce sont des solutions interessantes a mettre en place, mais qui au final coute tres cher en temps, (aussi cher en temps que si tu achetesai une seconde ADSL), et qui ne sont pas formatrices dans la mesure ou jamais une entreprise te demandera de les mettre en place en production.

                => tres difficile a stabiliser, trop cher, aucun interret.
                • [^] # Re: Virtual host

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

                  ok, j'essairai de trouver les messages...

                  Dans les deux cas, je refuse d implementer les solutions car ca veut dire que le deuxieme server ne peut etreaccede que via le premier, et vu la fiabilite des alims et disque durs de PC de particuliers (je pense pas que tu aies 4 alims redondantes sur anduleur inline, avec 2 chaines SCSI redondantes en RAID5 de 14 disques chacune), je trouve qua l probabilite de downtime est deja tres haute sur mes servers prives; si un sever depend d un autre, le downtime monte exponentiellement.


                  Mais je comprend pas pourquoi tu pars la dedans...
                  Les deux serveurs sont sur la même machine...
                  Donc fiabilité des durs, des alims, ... ça change quoi sur la dépendance entre les deux serveurs ?
                  Si une pièce foire, c'est les deux serveurs qui sont à la ramasse donc créer une dépendance entre les deux ne changera rien.
                  Et côté redondance, la seule chose que j'ai c'est des durs en raid 5 pour fiabilisé un peu en cas de crash mais c'est tout.

                  Sinon, dans tous les cas on a une chaine de dépendance, y compris en entreprise.
                  Il suffit de prendre une entreprise avec {une ligne|un firewall|un proxy} et si l'un crash tout tombe.

                  De plus je reste pas convaincu du mode rewrite, de ce que j'ai pu en voir la solution reste de passer par un reverse proxy, ce qui marche plutôt bien.
  • # utilise le DNAT avec iptables

    Posté par  . Évalué à 1.

    pour rediriger les paquets entrants vers un serveur interne, il faut faire
    du DNAT (Destination Network Address Translation)

    Par exemple, si ton serveur interne a pour addresse 192.168.0.2, tu va définir la règle suivante sur le serveur frontal:

    iptables -t nat -A PREROUTING -p tcp -j DNAT --destination-port 80 --to-destination 192.168.0.2:80


    Pour plus d'explication, tu peut aller voir les addresses suivantes:
    - http://www.c-sait.net/cours/partage_connexion.php(...)
    - http://lea-linux.org/reseau/secu/iptables.html(...)
  • # virtual host et mod proxy

    Posté par  (site web personnel) . Évalué à 3.

    sur ton serveur frontal tu mets un vhost qui permettra d'acceder a ton 2eme serveur ainsi qu'une redirection genre proxy

    NameVirtualhost IP_internet:80

    <virtualHost IP_internet:80>
    ServerAdmin root@mondomaine.tld
    ServerName php5.mondomaine.tld
    DocumentRoot /un_rep_au_cas_ou/
    ProxyPass / http://127.0.0.1:8080/(...)
    ErrorLog fichier_erreur_log
    TransferLog fichier_access_log
    </virtualHost>

    ainsi en tapant http://php5.mondomaine.tld(...) l'apache se trouvant sur le port 80 va effectuer les requettes sur http://127.0.0.1:8080/(...) pour apres les renvoyer vers ton navigateur
    • [^] # Re: virtual host et mod proxy

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

      je vois.
      C'est presque ça, mais je ne veux pas avoir à utiliser un sous-domaine pour ça (je veux que ce soit totalement transparant...) (-> oui je sais, je suis un peu chiant...)

      Donc pour le moment la solution que j'ai trouvé c'est de faire du reverse proxy
      Donc en gros, j'attaque le serveur utilisé par kolab et horde.
      Je veux donc que tout ce qui est sur ces deux serveurs ne soit pas redirigé
      J'ai donc :

      ProxyPass /horde !
      ProxyPassReverse /horde !


      et

      ProxyPass /admin !
      ProxyPassReverse /admin !


      Tout le reste s'en va vers le deuxième serveur :

      ProxyPass / http://monnomdedomaine:8080/(...)
      ProxyPassReverse / http://monnomdedomaine:8080/(...)


      J'accède sans problème à mon deuxième serveur, de manière totalement transparante
      Mais quand je veux accéder à horde par exemple, j'ai une erreur 400
      Bad Request
      Your browser sent a request that this server could not understand.


      Enfin pour admin c'est plus complexe car j'ai un répertoire admin sur chaque serveur...
      je veux que admin ne soit pas redirigé, mais que admin/phpMyAdmin soit redirigé...

      J'ai donc rajouté :

      ProxyPass /admin/phpMyAdmin http://monnomdedomaine:8080/admin/phpMyAdmin/(...)
      ProxyPassReverse /admin/phpMyAdmin/
      http://monnomdedomaine:8080/admin/phpMyAdmin/(...)


      Mais il me fait également une erreur 400...

Suivre le flux des commentaires

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