Nginx は、オープンソースの高性能、高信頼性の Web およびリバース プロキシ サーバーであり、ホット デプロイメントをサポートしています。ほぼ 7*24 時間、中断することなく実行できます。数か月実行しても再起動する必要はありません。サービスが提供されている場合は、ソフトウェア バージョンをホット アップデートしてください。Nginx にとって最も重要な考慮事項はパフォーマンスです。メモリの使用量が少なく、強力な同時実行機能があり、最大 50,000 の同時接続をサポートできます。最も重要なのは、Nginx は無料で商用化可能であり、設定と使用が比較的簡単であることです。
nginx がプロキシを構成するときに、いくつかの重要なポイントが無視されることがよくありますが、位置一致リクエストの URL に「/」が付いている場合と付いていない場合の違いは何でしょうか? ここで広めさせてください
1. ロケーション構成
1. 基本的な紹介
場所の設定は、リクエストの URL、つまり ngnix の $request_uri 変数と一致するために使用されます。その設定形式は次のとおりです。
場所 [スペース | = | ~ | ~* |^~|!~ | !~* ] /uri/ {}
2. 位置照合順序
(1) 位置一致形式ルールのプレフィックスは次のとおりです。
- = で始まる: は完全一致を示します
- ^~ で始まる: これは正規表現ではないことに注意してください。その目的は、正規表現よりもよく一致することです。場所が最も一致する場合、正規表現の検出は実行されなくなります。
- ~ で始まります: 大文字と小文字を区別する正規の一致を示します。
- ~* で始まる: 大文字と小文字を区別しない正規の一致を示します
- !~ && !~*: 大文字と小文字を区別する一致しない正規表現と、大文字と小文字を区別しない一致しない正規表現を示します。
(2) location にプレフィックスがない場合は、通常の文字列一致となります。次に例を示します。
- /uri/ 通常の文字列マッチング
- / 絶対パスのルート ディレクトリが一致します。他に一致するものがない場合は、すべてのリクエストが一致します。
(3) 一致検索の優先順位は以下のとおりです(上から順に優先順位が低くなります)。
知らせ:
- 一致が成功すると、一致は直ちに停止され、リクエストは現在の一致ルールに従って処理されます。
- 検索を優先するということは、ヒットを優先するという意味ではありません。
- 文字列一致が最初に検索されますが、最長一致のみが記録され (^~ が最長一致の場合は、直接ヒットし、通常の検索は停止します)、その後、通常の一致の検索が続行されます。一致する場合は通常の一致がヒットし、通常の一致がない場合は最長の文字列一致がヒットします。
- 最初の一致 =
- 2番目に一致します^~
- その後、設定ファイルの順序に従って定期的なマッチングを実行します。
- 最後に、ユニバーサル マッチングのために / に渡されます。
(場所 =) > (場所の完全なパス) > (場所 ^~ パス) > (場所 ~,~* の通常のシーケンス) > (場所の部分的な開始パス) > (/)
3. マッチングパターンとシーケンスの例
- location = /uri: = の先頭は完全一致を示し、完全に一致する場合にのみ有効になります。
- location ^~ /uri: ^~ は、URL パスで正規表現の前にプレフィックス マッチングを実行します。
- location ~ :pattern~ は、大文字と小文字を区別する正規の一致を示します。
- location ~*: pattern~* の先頭は、大文字と小文字を区別しない正規の一致を示します。
- location /uri: 修飾子がなければ、接頭辞の一致も意味しますが、通常の一致の後、通常の一致がない場合は、最長ルールがヒットします。
- location /: ユニバーサル一致。他の場所と一致しないリクエストは一致します。これはスイッチのデフォルトと同等です。
4. 場所が「/」で終わるかどうか
ngnix では、位置はあいまい一致を実行します。
- 末尾に「/」がない場合、location/abc/def は /abc/defghi リクエストに一致するか、/abc/def/ghi などにも一致します。
- 「/」で終わる場合、location/abc/def/ は /abc/defghi リクエストに一致できませんが、/abc/def/anything のようなリクエストにのみ一致します。
2. proxy_pass プロキシルール(「/」で終わるかどうか)
(1) proxy_pass の設定時に、絶対パスに相当する次の URL に / を追加すると、Nginx はその場所に一致するパス部分をプロキシ URI に追加しません。
たとえば、次の構成では http://IP/proxy/test.html にアクセスし、最終的なプロキシ URL は http://127.0.0.1/test.html です。
(2) proxy_pass の設定後に / がない場合、Nginx は一致するパス部分をプロキシ URI に追加します。
たとえば、次の構成では http://IP/proxy/test.html にアクセスし、最終的なプロキシ URL は http://127.0.0.1/proxy/test.htm です。