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


8
    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;
    }

回答:


10

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

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

場合場所がスラッシュ文字で終了し、そして要求が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;
}

私はproxy_pass myip:8080 / productを使用しており、ブラウザにこのアドレスを呼び出します。ブラウザがmyip / productにリダイレクトし、エラーページが表示できないことを示します。
barteloma 2014年

コードにはバックティックを使用します。Markdownがコメントを解析しましたが、実際のコードが何であるかを見つけるのは困難です。
Alexey Ten

おかげで、/ product /が追加された場合、ブラウザがそれを送信しても、/ productがサーバーから301を受信するようにバインドされることを知ることが重要でした。確かにかなり有効なポイントです。
シュルマックス

3

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

location ~ /product/?

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.