我需要向我的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
答案 0 :(得分:5)
我的猜测,你不需要重写。
location /foo/bar/ {
proxy_pass http://myapp/;
}
这应该从代理网址中删除/foo/bar
部分。