2017-10-13 17 views
3

J'ai un serveur de post écoute sur le port 8081 et le chemin de l'échantillon. Je veux être en mesure de rediriger l'ensemble de la requête URI param le service du nœud. Comment dois-je le faire.Passer une requête URI param Nginx reverse proxy

par exemple je veux la demande après l'URL suivante http://exmaple.com/foo/bar?bla=1 à passé àhttp://example.com:8081/foo/bar?bla=1

Il semble par exemple en avant très simple et droite, mais ne peux pas le faire fonctionner, tout ide?

location ^~ /foo/bar { 

       rewrite_log on; 
       rewrite ^/foo/bar(.*) /$1 break; 
       proxy_pass http://example.com:8081/foo/bar;     
     } 

Répondre

2

Par défaut proxy_pass ne changera pas la demande URI (y compris la chaîne de requête). L'exemple dans votre question illustre deux manières dans lequel l'URI peut être modifié avant d'être envoyé en amont - en ajoutant un URI facultatif à l'instruction proxy_pass (voir this document) ou avec une instruction rewrite...break (voir this document).

Si vous supprimez les deux, l'URI sera envoyé en amont et sans encombre la chaîne de requête intacte:

location ^~ /foo/bar { 
    proxy_pass http://example.com:8081; 
} 
+0

soutient-elle une requête POST soit, puisque votre solution n'a pas fonctionné pour moi ... – user4860092

+1

La requête POST doit être transmise de manière transparente. Relecture de votre question - Il est inhabituel d'inclure des paramètres codés en URL dans une requête POST, car la requête POST inclut un corps. –

+0

vous avez raison concernant le poste, il est en cours de développement et ont tendance à être changer dans un proche avenir. Tout d'abord, je veux réparer l'inverse proxy isuue que je suis ici. Je n'ai pas mentionné mais je pense que ça devrait aussi être transparent, le serveur inclut tls (https) – user4860092