nginx で
location /foo/ {
set $backend "backend";
proxy_pass http://$backend:12345/;
}
のように traliling slash を付けているはずなのに、 /foo/bar へのリクエストが backend:12345/bar でなく backend:12345/ に飛んでしまう。何故だ……
proxy_pass で変数使うのやめて http://backend:12345/ とダイレクトに書いたらちゃんとパス含めてリダイレクトされるようになった……何だこれ
/good/foo にアクセスするとバックエンドの /foo にアクセスが飛ぶが、 /bad/foo にアクセスすると何故かバックエンドの / にアクセスが飛ぶ。 nginx 1.21.3。
nginx 意味わかんねえ、なんだこれ!
@orumin 私もその仕様を期待していたんですが、ホスト名に変数 ($backend 等) を使うとそもそも trailing slash の有無に関係なくリクエストのパス部が全て捨てられるという最悪仕様に遭遇したという話です……
@orumin proxy_pass で :9100/ しているので /good/foo や /bad/foo は :9100/foo にアクセスが飛んでほしかったんですが、 $backend:9100/ していると絶対に $backend:9100/ 自体にしかリクエストが飛ばないみたいで……