web-dev-qa-db-ja.com

nginx構成で末尾のスラッシュを使用する

    location /product {
        proxy_pass http://10.0.0.25:8080;
    }

製品フォルダーの最初の場所の説明を使用する場合、http://mysdomain.com/product/を使用する必要があり、ブラウザーからhttp://mysdomain.com/productを使用できません。つまり、URLの最後にスラッシュを使用する必要があります。 2つの条件で製品フォルダにアクセスしたい。

これには違いがありますか?

    location /product/ {
        proxy_pass http://10.0.0.25:8080;
    }
8
barteloma

これらの場所は異なります。たとえば、最初は/productionと一致しますが、これは期待したものとは異なる場合があります。したがって、末尾にスラッシュがある場所を使用することを好みます。

また、次の点にも注意してください。

location がスラッシュ文字で終わるプレフィックス文字列によって定義され、リクエストがproxy_pass、fastcgi_pass、uwsgi_pass、scgi_pass、またはmemcached_pa​​ssのいずれかによって処理された場合、URIが等しいリクエストへの応答この文字列に、スラッシュを付けずに、コード301を含む永続的なリダイレクトが、スラッシュを追加してリクエストされたURIに返されます。

次のようなものがあれば:

location /product/ {
    proxy_pass http://backend;
}

http://example.com/productに移動すると、nginxが自動的にhttp://example.com/product/にリダイレクトします。

上記のディレクティブのいずれかを使用しない場合でも、常に手動でリダイレクトできます。

location = /product {
    rewrite ^ /product/ permanent;
}

または、リダイレクトしたくない場合は、次のように使用できます。

location = /product {
    proxy_pass http://backend;
}
10
Alexey Ten

いいえ、これらは同じではありません。両方に一致させるには、正規表現で末尾のスラッシュを使用する必要があります。

location ~ /product/?

URL全体を照合する方法の詳細については、 この関連回答 を参照してください。

3
Andrew M.