nginx conditionnelle proxy pass
je suis en train de configurer nginx pour proxy transmettre la requête à un autre serveur,
seulement si $request_body variable correspond sur une expression régulière.
Mon problème maintenant est que je ne sais pas comment configurer ce comportement exactement.
Je suis actuellement en panne de celui-ci:
server {
listen 80 default;
server_name test.local;
location /{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
if ($request_body ~* ^(.*)\.test) {
proxy_pass http://www.google.de;
}
root /srv/http;
}
}
mais le problème, c'est que racine a toujours le dessus.
la procuration ne seront pas transmises.
aucune idée sur comment je pourrais y arriver?
merci d'avance
Êtes-vous sûr que vous voulez vérifier
ouais j'ai pas d'autre choix, malheureusement, et j'ai vraiment besoin de proxy pass, l'application ne peut pas rediriger (client xml-rpc)
Mais quel est le problème maintenant? Ne fonctionne pas? Ce qui est dans les journaux?
ouais, ça ne fonctionne pas, quand j'enlève la racine de la ligne, le proxy fonctionne, quand j'ajoute la racine de la ligne, c'est comme si le proxy n'est pas configuré.
donc j'ai un peu besoin de réussir à rendre le si de travail que je m'attends à...
$request_body
contre regexp? Il va ralentir votre application pour x fois Aussi, voulez-vous faire proxy_pass
ou tout simplement redirect
?ouais j'ai pas d'autre choix, malheureusement, et j'ai vraiment besoin de proxy pass, l'application ne peut pas rediriger (client xml-rpc)
Mais quel est le problème maintenant? Ne fonctionne pas? Ce qui est dans les journaux?
ouais, ça ne fonctionne pas, quand j'enlève la racine de la ligne, le proxy fonctionne, quand j'ajoute la racine de la ligne, c'est comme si le proxy n'est pas configuré.
donc j'ai un peu besoin de réussir à rendre le si de travail que je m'attends à...
OriginalL'auteur sharpner | 2011-10-24
Vous devez vous connecter pour publier un commentaire.
essayez ceci:
np, vous êtes les bienvenus 🙂
Cette méthode fonctionne encore? Il ne semble pas dans mes tests.
avez-vous fait ce test? Il ressemble à nginx ne lit pas les request_body variable à ce point, de sorte qu'il ne se passe jamais de le vérifier...
il ne fonctionne plus. La seule chose qui reste correct dans la réponse, est l'absence de rupture de la version originale. - J' "refusés" la réponse.
OriginalL'auteur user973254
Nginx routage est basé sur l'emplacement de la directive, qui correspond à l'URI de la Demande. La solution est de modifier temporairement cela dans le but de transmettre la demande à différents points de terminaison.
La
if
condition ne peuvent être utilisés en toute sécurité Nginx avec le module de réécriture d' qui est une partie de. Dans cet exemple. Lerewrite
préfixes l'URI de la Demande avecistest
.La
location
blocs de donner la priorité à la correspondance la plus proche. Quelque chose correspondant à/istest/
ira à la deuxième bloc qui utilise un autrerewrite
pour supprimer/istest/
à partir de l'URI de la Demande avant de la transmettre à l'amont de proxy.OriginalL'auteur Steve E.