nginx重写POST请求

时间:2017-03-15 12:23:37

标签: post nginx url-rewriting request

我需要向我的nginx前端服务器发送POST请求,该服务器应将其重定向到上游服务器。 详情:

http://192.168.0.10/foo/bar/blah发送请求,此请求中的网址应更改为http://192.168.0.21[22,23]:8080/foo/blah

"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) 

但在nginx错误日志中,我看到我的请求已从POST更改为GET,似乎也没有更改URL:

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

如何保留我的POST请求并更改URL?

还有关于我的重写规则

 location = /foo/bar/blah {
          proxy_pass http://myapp/foo/blah;
       }

我找到了很多改变URL的例子,但它们看起来都是一样的。 这对我来说真的很奇怪,这个重写规则如何将URL从/ foo / bar / blah /更改为/ foo / blah /: 在文件中说: http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite

  

如果指定的正则表达式与请求URI匹配,则URI为   如替换字符串中指定的那样更改。

但在我的情况下,请求URI是/ foo / bar / blah /所以正则表达式/ foo / blah ^ /不匹配URI,所以这个规则不应该工作。 我是对的吗?

任何建议都会有所帮助。

UPD: 固定:

Microsoft.CodeAnalysis.CSharp.dll

1 个答案:

答案 0 :(得分:5)

我的猜测,你不需要重写。

location /foo/bar/ {
  proxy_pass http://myapp/;
}

这应该从代理网址中删除/foo/bar部分。