我必须在 TLS 终止的 Web 服务前面放置一个 nginx 反向代理,它只使用 URI 的查询部分进行 302 重定向:
GET /path/to/document?query=1
Host: 127.0.0.1
Returns 302 with
Location: ?query=2
nginx 总是构建完整的 URI 但忽略文档,因此重定向不起作用
GET /path/to/document?query=1
Host: example.com
Returns 302 with
Location: https://example.com/path/to/?query=2
我试过了proxy_redirect off;
,但这并没有改变任何东西。我究竟做错了什么?
这是我目前使用的配置:
location / {
client_max_body_size 50M;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_pass http://ip.of.the.host/;
proxy_redirect off;
}
我可以设置proxy_redirect ~\?(.*)$ https://example.com/path/to/document?$1;
,但我确定我会破坏其他东西。
如何让 nginx 只回复与上游服务器相同的位置路径?