私たちは、nginx プロキシの背後にある nginx ウェブサーバーを使用しています。サブパスを参照しようとすると、nginx バックエンド ウェブサーバー (something.example.local) が、予想どおり、URL の後ろに末尾のスラッシュを追加します (301 リダイレクト)。問題は、フロントエンド プロキシによって公開されておらず、マスクされることを意図していない間違った URL にリダイレクトされることです。この問題を解決する最適な解決策は何ですか?
(私は次のような多くの提案を試しましたが、どれもうまくいきませんでした:
https://serverfault.com/questions/1043091/unexpected-301-redirects-from-nginx-when-behind-nginx-reverse-proxy https://bluegrid.io/edu/how-to-add-a-trailing-slash-on-urls-in-nginx/ https://stackoverflow.com/questions/22759345/nginx-trailing-slash-in-proxy-pass-url https://www.shellhacks.com/nginx-proxy_pass-without-trailing-slash/ 絶対リダイレクトのオフ、プロキシリダイレクト設定、バックエンド サーバーのルールの書き換え)
Nginx「フロントエンド」プロキシ設定:
location /goodpath/ {
proxy_pass https://something.example.local/wrongpath/;
proxy_set_header Host example.com:$server_port;
proxy_set_header X-Real-IP $remote_addr;
}
# curl -I https://example.com/goodpath
HTTP/1.1 301 Moved Permanently
server: nginx
date: Thu, 31 Aug 2023 13:29:25 GMT
content-type: text/html
content-length: 162
location: **https://example.com/goodpath/**
$ curl -I **https://example.com/goodpath/subpath**
HTTP/1.1 301 Moved Permanently
server: nginx
date: Thu, 31 Aug 2023 13:30:23 GMT
content-type: text/html
content-length: 162
location: **https://example.com/*wrongpath*/subpath/**
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
strict-transport-security: max-age=31536000; includeSubDomains