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 :

Load balacing et reverse proxy : erreur 500 avec ProxyPassReverse


Sujet :

Apache

  1. #1
    Candidat au Club
    Profil pro
    Account Manager
    Inscrit en
    Juillet 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Juillet 2010
    Messages : 12
    Points : 4
    Points
    4
    Par défaut Load balacing et reverse proxy : erreur 500 avec ProxyPassReverse
    Bonjour,

    J'ai un petit souci avec la mise en place d'un load balacing sous Apache 2.2, mon souci vient de la ligne qui concerne le reverse proxy :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
     
    ProxyRequests Off
    NameVirtualHost *:80
     
    <VirtualHost *:80>
        ServerName serveur.com
        DocumentRoot D:/apache2.2/htdocs
        ErrorLog D:/apache2.2/error_80.log
        CustomLog D:/apache2.2/access_80.log common
    </VirtualHost>
     
    <VirtualHost *:80>
        ServerName test.serveur.com
    	ProxyPreserveHost On
    	<Proxy balancer://test>
    		Order deny,allow
    		Allow from all
    		BalancerMember http://localhost:81/testWeb/
    		BalancerMember http://localhost:82/testWeb/
    	</Proxy>
    	ProxyPass / balancer://test stickysession=JSESSIONID nofailover=Off
    	#ProxyPassReverse / balancer://test
    </VirtualHost>

    Si je décommente la ligne qui concerne le reverse proxy j'ai droit à une erreur 500 que je n'arrive pas à expliquer.

    Merci pour votre aide.

    Florian.

  2. #2
    Candidat au Club
    Profil pro
    Account Manager
    Inscrit en
    Juillet 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Juillet 2010
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Petite précision au niveau de mon instance apache sur le port 81 (et 82) voici mon vh :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <VirtualHost *:81>
            ServerName test.serveur.com
    	DocumentRoot "D:/apache2.2/test1"
            ErrorLog D:/apache2.2/error_81.log
       	CustomLog D:/apache2.2/access_81.log common
    </VirtualHost>
    Je ne sais pas si ca peut venir de la....

    Si qqu'un a déjà eu ce genre de souci avec le reverse proxy dans le cas d'un load balacing, je suis preneur.

    Merci.

  3. #3
    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
    Citation Envoyé par florian. Voir le message
    Si je décommente la ligne qui concerne le reverse proxy j'ai droit à une erreur 500 que je n'arrive pas à expliquer.
    Quand il y a cette erreur 500, que dit le fichier error_log d'Apache ? Que dit ce même fichier quand Apache démarre avec cette ligne qui pose problème ?

  4. #4
    Candidat au Club
    Profil pro
    Account Manager
    Inscrit en
    Juillet 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Juillet 2010
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Voici l'erreur dans le error_log :

    [Mon Aug 09 17:10:57 2010] [warn] proxy: No protocol handler was valid for the URL /login.php. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.
    Merci pour ta réponse _Mac_

  5. #5
    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
    Avec quelle URL tu obtiens cette trace ? Ce qui me gêne c'est que c'est un warning, pas une erreur, donc pas de quoi déclencher une erreur 500. Tu peux donner une trace plus complète d'une séquence démarrage d'Apache + test d'erreur ? Lorsque tu as la trace, redonne la configuration utilisée pour l'obtenir. Tu confirmes bien que commenter le ProxyPassReverse ne provoque plus d'erreur 500 ?

  6. #6
    Candidat au Club
    Profil pro
    Account Manager
    Inscrit en
    Juillet 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Juillet 2010
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Bonjour _Mac_

    Je confirme que j'ai l'erreur 500 uniquement quand j'ai la ligne concernant le reverse proxy est décommenté (en rentrant l'adresse http://test.serveur.com/).

    Sur mon instance apache 2.2 sur le port 80 j'ai la configuration suivante :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
     
    ProxyRequests Off
    NameVirtualHost *:80
     
    <VirtualHost *:80>
        ServerName serveur.com
        DocumentRoot D:/apache2.2/htdocs
        ErrorLog D:/apache2.2/logs/error_80.log
        CustomLog D:/apache2.2/logs/access_80.log common
    </VirtualHost>
     
    <VirtualHost *:80>
            ServerName test.serveur.com
    	ErrorLog D:/apache2.2/logs/error_80_balancer.log
            CustomLog D:/apache2.2/access_80_balancer.log common
    	ProxyPreserveHost On
    	<Proxy balancer://test>
    		Order deny,allow
    		Allow from all
    		BalancerMember http://test.serveur.com:81/
    		BalancerMember http://test.serveur.com:82/
    	</Proxy>
    	ProxyPass / balancer://test stickysession=JSESSIONID nofailover=Off
    	ProxyPassReverse / balancer://test
    </VirtualHost>
    J'ai rajouté des logs au niveau du VH où j'ai le loadbalacing.

    Au niveau de mon instance apache 2.0 (port 81 ou 82, la configuration est identique) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <VirtualHost *:81>
        ServerName test.serveur.com
    	DocumentRoot "D:/apache2.2/test1"
    	ErrorLog D:/apache2.0/Apache2/logs/apache_error_81.log
    	CustomLog D:/apache2.0/Apache2/logs/apache_access_81.log common
    </VirtualHost>

    Quand je lance apache 2.2 (port 80 - loadbalacing), j'ai uniquement le fichier error.log de rempli :

    [Tue Aug 10 09:12:19 2010] [notice] Apache/2.2.14 (Win32) PHP/5.2.13 configured -- resuming normal operations
    [Tue Aug 10 09:12:19 2010] [notice] Server built: Sep 28 2009 22:41:08
    [Tue Aug 10 09:12:19 2010] [notice] Parent: Created child process 536
    [Tue Aug 10 09:12:20 2010] [notice] Child 536: Child process is running
    [Tue Aug 10 09:12:20 2010] [notice] Child 536: Acquired the start mutex.
    [Tue Aug 10 09:12:20 2010] [notice] Child 536: Starting 64 worker threads.
    [Tue Aug 10 09:12:20 2010] [notice] Child 536: Starting thread to listen on port 80.
    Au niveau des instances apache 2.0 (port 81 et 82), le fichier error.log donne :

    [Tue Aug 10 09:12:15 2010] [notice] Apache/2.0.63 (Win32) PHP/5.2.13 configured -- resuming normal operations
    [Tue Aug 10 09:12:15 2010] [notice] Server built: Jan 17 2008 22:58:29
    [Tue Aug 10 09:12:15 2010] [notice] Parent: Created child process 4620
    [Tue Aug 10 09:12:15 2010] [notice] Child 4620: Child process is running
    [Tue Aug 10 09:12:15 2010] [notice] Child 4620: Acquired the start mutex.
    [Tue Aug 10 09:12:15 2010] [notice] Child 4620: Starting 250 worker threads.

    Une fois tous les serveurs démarrés, je rentre l'adresse http://test.serveur.com, si le reverse proxy n'est pas activé j'arrive sur l'adresse http://test.serveur.com:81(ou82)/login.php.

    Si je décommente le reverse proxy j'ai donc l'erreur 500 avec le warning vu hier dans le fichier error_80_balancer.log :

    [Tue Aug 10 09:13:12 2010] [warn] proxy: No protocol handler was valid for the URL /login.php. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.
    Je n'ai malheureusement pas plus d'informations dans les autres logs.

    Je n'arrive tjs pas comprendre d'où peut venir le souci.

    En tout cas merci pour ton aide _Mac_

  7. #7
    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
    Je ne vois pas non plus quel est le problème mais c'est vrai que dans la doc Apache sur proxy balancer il n'y a pas de ProxyPassReverse. Si ton site marche sans le ProxyPassReverse, ne le mets pas

  8. #8
    Candidat au Club
    Profil pro
    Account Manager
    Inscrit en
    Juillet 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Juillet 2010
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Le souci que j'ai, si je ne mets pas le proxy reverse, je n'ai pas l'adresse http://test.serveur.com qui reste mais http://test.serveur.com:81(ou:82)/ (ce qui reste normal jusque la).

    Je voulais justement garder l'adresse http://test.serveur.com/

    J'ai fais un nouveau test, sur les instances 81 et 82 j'ai remplacé l'application hébergé par un index.html qui contient uniquement le mot '81' pour le serveur qui a pour port 81 (idem pour le serveur qui utilise le port 82).

    J'active le reverse proxy et la tout se passe bien : quand je rentre l'adresse test.serveur.com j'affiche 81, j'actualise et j'ai 82, ainsi desuite.....

    Je suppose que mon erreur 500 vient de l'application que je veux faire fonctionner à travers le loadbalacing, la seule différence que je vois c'est l'utilisation de web services windev :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LoadModule windev_module "D:/www/system/WD100SAPA2.dll"
    AddHandler windev-module .soap
    Est-ce que ca pourrait être la cause de mon erreur 500 ?

    Si je fais un proxy / reverse proxy de mon appli, ca marche, c'est quand j'utilise le loadbalacing que j'ai mon erreur 500, étrange non ?

    Encore une fois merci bcp _Mac_ pour ton aide.

  9. #9
    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
    Ca ne vient de WinDEV : aucun rapport avec la choucroute.

    Je craignais ce problème, ProxyPassReverse est censé le pallier. Essaie alors avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ProxyPassReverse / http://test.serveur.com:81/
    ProxyPassReverse / http://test.serveur.com:82/
    ça devrait plus plaire à Apache.

  10. #10
    Candidat au Club
    Profil pro
    Account Manager
    Inscrit en
    Juillet 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Juillet 2010
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Bonjour _Mac_,

    J'ai donc mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ProxyPassReverse / http://test.serveur.com:81/
    ProxyPassReverse / http://test.serveur.com:82/
    à la place de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ProxyPassReverse / balancer://test
    Mais ca ne marche pas mieux, ca fait exactement la mm chose (c'était bien tenté, j'y ai cru), je n'ai pas plus de traces dans les logs...


  11. #11
    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
    Le warning sur "No protocol handler" ou il a disparu ? A part dire que l'erreur 500 ne vient pas du reverse proxy mais des sites des ports 81 et 82, je n'ai pas d'idée. Tu peux regarder dans les logs (accès et erreur) de ces sites ? Regarde également à tout hasard dans l'observateur d'événements de Windows.

  12. #12
    Candidat au Club
    Profil pro
    Account Manager
    Inscrit en
    Juillet 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Juillet 2010
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Au niveau des logs, le warning est tjs présent, sur les ports 81 et 82 aucune info dans les logs. Pas plus dans l'observateur d'événements de Windows.

    J'ai testé une configuration "alternative" sur le serveur frontal :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
    LoadModule proxy_connect_module modules/mod_proxy_connect.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    LoadModule rewrite_module modules/mod_rewrite.so
     
    ProxyRequests Off
    NameVirtualHost *:80
     
    <VirtualHost *:80>
    	ServerName test.serveur.com
    	ErrorLog D:/Apache2.2/logs/error_80_balancer.log
                CustomLog D:/Apache2.2/access_80_balancer.log common
    	RewriteEngine On
    	RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
    	RewriteRule ^/(.*)$ balancer://test%{REQUEST_URI} [P,QSA,L]
    </VirtualHost>
     
    ProxyPreserveHost On
    ProxyPass / balancer://test stickysession=PHPSESSIONID nofailover=Off
    ProxyPassReverse / balancer://test
    <Proxy balancer://test>
    	BalancerMember http://test.serveur.com:81
    	BalancerMember http://test.serveur.com:82
    </Proxy>
    Ca fonctionne mais j'ai des erreurs ensuite dans l'application... je me demande si ca ne vient pas de la régle rewrite et le stickysession...

    As-tu une idée _Mac_ ?

    Encore merci pour ton aide

  13. #13
    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
    Fort possible : y a des pbs connus avec l'affinité de session PHP. Si tu cherches sur le forum Apache avec le mot-clé stickysession tu trouveras peut-être des trucs.

Discussions similaires

  1. erreur 500 avec firefox
    Par omercrafts dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 11/08/2008, 00h25
  2. Erreur 500 avec CGI
    Par Neuromancien2 dans le forum Apache
    Réponses: 2
    Dernier message: 09/08/2008, 21h40
  3. Erreurs 500 avec apache2/php5
    Par jforks dans le forum Apache
    Réponses: 3
    Dernier message: 07/04/2008, 13h04
  4. [GD] Erreur 500 avec script d'une ligne
    Par keul dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 24/09/2007, 11h50

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