2017-03-21 2 views
0

Je configure nginx comme proxy inverse.Réécriture de Nginx: comment changer l'URL de dynamique à statique

J'ai besoin de changer (réécrire?) Les URL, exemple: lorsque la requête (à nginx Reverse Proxy) est "http://example.com/test/?username=test1;password=passwdtest1", elle doit être "modifiée" sur le serveur principal comme "http://example.com/test/?username=production;password=passwdproduction1".

Considérons que dans la demande d'origine, les champs "username = test1; password = passwdtest1" ne sont pas toujours les mêmes (ils changent), à la place les "modifiés" du serveur principal sont toujours les mêmes.

D'autres par exemple pour être plus clair:

"?/Test/nom d'utilisateur = test1; password = passwdtest1" -> "?/Test/nom d'utilisateur = production; password = passwdproduction1"

«/test ?/nom d'utilisateur = test1876; password = somepasswd "-> "/ test/nom d'utilisateur = production;? password = passwdproduction1"

"/ test/nom d'utilisateur = somevalues;? password = somepasswdvalue" ->"/test/nom d'utilisateur = production; mot de passe = passwdproduction1 "

Ainsi, indépendamment de ce que sont les les valeurs de "? username = somevalues; password = somepasswdvalue" devraient toujours devenir "? username = production; password = passwdproduction1".

Merci pour votre aide!

+0

MISE À JOUR: je résous ainsi:. 'Emplacement ~/test/{ if (args $ ~ ". Nom d'utilisateur = (+); password = (+)") { rewrite^* $ «/test /? nom d'utilisateur = production; mot de passe = passwdproduction1 "pause; } ' – Fabio

Répondre

0

Un peu en retard sur la réponse, mais cela devrait fonctionner pour vous:

location ~* /test/? { 
    if ($arg_username ~ "^$|\s+") { return 404; } 
    if ($arg_password ~ "^$|\s+") { return 404; } 
    rewrite^/test?username=production&password=passwdproduction1? permanent; 
} 

Le code ci-dessus vérifie si elle est dans le chemin example.com/test. Si c'est le cas, il vérifiera si le nom d'utilisateur ou la variable de mot de passe sont présents et non vides dans la chaîne de requête. Dans le cas où aucun n'est présent ou est vide, il retournera un 404 sinon il vous redirigera vers l'URL préférée. Par ailleurs, à la place du point-virgule dans votre exemple, j'utiliserais une esperluette (&).