gpt4 book ai didi

post - nginx 重写 POST 请求

转载 作者:行者123 更新时间:2023-12-01 10:30:49 25 4
gpt4 key购买 nike

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

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

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;
}

但在 nginx 错误日志中,我看到我的请求从 POST 更改为 GET,并且似乎也没有更改 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)

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

还有关于我的重写规则

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

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

If the specified regular expression matches a request URI, URI is changed as specified in the replacement string.

但在我的例子中请求 URI 是/foo/bar/blah/所以正则表达式/foo/blah^/不匹配 URI,所以这个规则不应该起作用。我说得对吗?

任何建议都会有所帮助。

更新:固定:

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

最佳答案

我猜,你不需要重写。

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

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

关于post - nginx 重写 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42809659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com