場所があります
location /pass/ {
proxy_pass http://localhost:12345/;
}
したがって、URLをプロキシ化することになっていますhttp://example.com/pass/whatever
からhttp://localhost:12345/whatever
私がそれについて好きではないことは、nginxが自動的にスラッシュを追加することです
http://example.com/pass
そしてそれをhttp://example.com/pass/
301リダイレクト経由
この動作を回避するにはどうすればよいですか。が欲しいです /pass
別の場所に移動するための末尾のスラッシュなし。前もって感謝します!
別の場所に移動したいので、自然な解決策はその場所を追加することです
location /pass {
}
デフォルトでは、nginxはWebルートで「pass」と呼ばれるファイルを探します。このデフォルトが気に入らない場合は、この新しいロケーションブロック内にディレクティブを追加して、それを実現できます。
あなたも使うかもしれません
location = /pass {
}
nginxが一致を少し早く見つけることができるように。
_proxy_pass
_で終わるlocation
を持つ_/
_が、バックエンドに移動せずに自動的に暗黙的な_301
_リダイレクトになる特殊なケースがあります。これを回避するには、末尾のスラッシュなしで明示的にlocation
を作成する必要があります。
場所がスラッシュ文字で終わるプレフィックス文字列によって定義され、リクエストがproxy_pass、fastcgi_pass、uwsgi_pass、scgi_pass、memcached_pass、またはgrpc_passのいずれかによって処理される場合、特別な処理が実行されます。 URIがこの文字列と等しいが末尾のスラッシュがないリクエストに応答して、コード301の永続的なリダイレクトが、スラッシュが追加されたリクエストされたURIに返されます。これが望ましくない場合は、URIと場所の完全一致を次のように定義できます。
_location /user/ { proxy_pass http://user.example.com; } location = /user { proxy_pass http://login.example.com; }
_
たとえば、既存の_/pass
_に加えて明示的な_/pass/
_ location
を作成する必要があります。それ以外の場合は、暗黙的な_location /pass {return 301 /pass/…;}
_が作成されます。
しかし、本当に自分がやろうとしていることを実行したいのですか? _/pass
_から_/pass/
_へのリダイレクトを省略する場合、相対パスは機能しません。一部の新しいブラウザでは、UI/UXに欠陥があり、末尾のスラッシュが表示されない傾向があるため、区別のトラブルシューティングを行う際に混乱が生じる可能性があります。