3 votes

Apache mod_proxy+mod_rewrite = erreur "La requête a dépassé la limite ..."

Bonjour,

J'utilise Apache en tant que proxy inverse pour mon application Tornado qui s'exécute sur http://localhost:8090. Je veux qu'Apache renvoie tout ce qui arrive à /api/v2 via HTTPS vers http://localhost:8090. Apache gère également l'authentification, donc je dois transférer le nom d'utilisateur authentifié à mon application Tornado. J'utilise donc mod_rewrite.

J'ai ajouté l'entrée suivante à la configuration d'Apache:

    ProxyPass http://localhost:8090

    # Les quatre lignes suivantes servent à définir X-Forwarded-User
    RewriteEngine On
    RewriteRule .* - [E=RU:%{LA-U:REMOTE_USER}]
    RequestHeader set X-Forwarded-User %{RU}e

    SSLRequireSSL

    AuthType Basic
    AuthName "Mon site"
    AuthBasicProvider external
    AuthExternal pwauth
    Require valid-user

    Order deny,allow
    Allow from all

Cela fonctionne très bien, sauf que je vois l'erreur suivante dans mon journal Apache:

La requête a dépassé la limite de 10 niveaux d'enchevêtrement de sous-requêtes en raison d'une erreur de configuration probable. Utilisez 'LimitInternalRecursion' pour augmenter la limite si nécessaire. Utilisez 'LogLevel debug' pour obtenir une trace de la pile.

J'ai activé le journal de débogage pour le module rewrite et je remarque en effet quelque chose d'étrange - il semble que la réécriture se produise 10 fois en boucle, empilant la requête sur elle-même:

172.16.0.150 - admin [29/Jan/2014:19:01:06 +0200] [sm397/sid#7f8452235588][rid#7f840c0093b8/initial] (3) [perdir /api/v2/] application du motif '.*' à l'URI 'proxy:http://localhost:8090/'
172.16.0.150 - admin [29/Jan/2014:19:01:06 +0200] [sm397/sid#7f8452235588][rid#7f840c01f638/subreq] (3) [perdir /api/v2/] application du motif '.*' à l'URI 'proxy:http://localhost:8090/proxy:http://localhost:8090/'
172.16.0.150 - admin [29/Jan/2014:19:01:06 +0200] [sm397/sid#7f8452235588][rid#7f840c00d6a8/subreq] (3) [perdir /api/v2/] application du motif '.*' à l'URI 'proxy:http://localhost:8090/proxy:http://localhost:8090/proxy:http://localhost:8090/'
172.16.0.150 - admin [29/Jan/2014:19:01:06 +0200] [sm397/sid#7f8452235588][rid#7f840c025e08/subreq] (3) [perdir /api/v2/] application du motif '.*' à l'URI 'proxy:http://localhost:8090/proxy:http://localhost:8090/proxy:http://localhost:8090/proxy:http://localhost:8090/'
172.16.0.150 - admin [29/Jan/2014:19:01:06 +0200] [sm397/sid#7f8452235588][rid#7f840c029e28/subreq] (3) [perdir /api/v2/] application du motif '.*' à l'URI 'proxy:http://localhost:8090/proxy:http://localhost:8090/proxy:http://localhost:8090/proxy:http://localhost:8090/proxy:http://localhost:8090/'
172.16.0.150 - admin [29/Jan/2014:19:01:06 +0200] [sm397/sid#7f8452235588][rid#7f840c02de48/subreq] (3) [perdir /api/v2/] application du motif '.*' à l'URI 'proxy:http://localhost:8090/proxy:http://localhost:8090/proxy:http://localhost:8090/proxy:http://localhost:8090/proxy:http://localhost:8090/proxy:http://localhost:8090/'

Journal complet ici : http://pastebin.com/raw.php?i=HqnuFFpQ

Comment résoudre ce problème?

Merci

4voto

Shane Madden Points 112034

C'est très étrange, car il ne devrait pas y avoir quoi que ce soit qui provoque l'ajout sur les sous-requêtes.

Voyons si quelque chose change lorsque cette règle n'est pas appliquée aux sous-requêtes insanes en ajoutant un drapeau NS:

RewriteRule .* - [E=RU:%{LA-U:REMOTE_USER},NS]

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X