nginx rewrite POST-Anforderung

Muss ich senden-POST-request an meine nginx-frontend-server das sollte leiten es an upstream Server.
Details:

senden Anfrage an http://192.168.0.10/foo/bar/blah und die URL in diesem Antrag sollte geändert werden, um http://192.168.0.21[22,23]:8080/foo/bla

upstream myapp {
   server 192.168.0.21:8080;
   server 192.168.0.22:8080;
   server 192.168.0.23:8080;
}

server {
    listen       80;
    server_name  localhost;

   location /foo/bar/blah/{
      rewrite ^/foo/blah^//$1 break;
      proxy_pass http://myapp;
   }

aber in der nginx error log sehe ich, dass ich meine Anfrage geändert von POST zu BEKOMMEN und scheint auch nicht ändern, URL:

"POST /foo/bar/blah HTTP/1.1" 301 185 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64)
"GET /foo/bar/blah/HTTP/1.1" 404 117 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) 

Wie kann ich mein POST-Anforderung, und ändern Sie die URL?

Auch über meine rewrite-Regel

      rewrite ^/foo/blah^//$1 break;

Fand ich eine Menge Beispiele für das ändern der URL und alle von Ihnen gleich aussieht.
Und es ist wirklich seltsam für mich, wie das rewrite-Regel ändern können URL aus /foo/bar/bla/, /foo/bla/:
in documentaion sagt:
http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite

Wenn der angegebene reguläre Ausdruck entspricht einer request-URI, URI-ist
geändert wie angegeben, in der Ersatz-Zeichenfolge.

aber in meinem Fall im request-URI ist /foo/bar/bla/also regulären Ausdruck /foo/foo^/nicht entspricht, URI, so dass diese Regel nicht funktionieren sollte.
Bin ich im Recht?

Wäre hilfreich, jeder rät.

UPD:
behoben:

 location = /foo/bar/blah {
          proxy_pass http://myapp/foo/blah;
       }
Gut, wenn Sie POST zu /foo/bar/blah dann auch nicht location /foo/bar/blah/ sollten übereinstimmen, dass in der ersten Ort (keine nachgestellten Schrägstrich.) // Wenn Sie möchten, dass der client nicht ändern Sie den request-Methode auf einen redirect, dann müssen Sie eine 307 Temporary Redirect. Aber es sieht aus wie Sie nicht wollen, um tatsächlich umleiten des Clients, sondern übergeben Sie die Daten auf intern, so dass Ihr nginx als proxy fungiert. Das sind verschiedene Dinge ...
so wie man die richtige Regel? Ich habe gerade gelöscht trailing slash in meine umschreiben, und es scheint, beginnt zu senden-POST, aber noch nicht umschreiben URI

InformationsquelleAutor Trav Erse | 2017-03-15

Schreibe einen Kommentar