Nginx ロケーション ディレクティブ URI マッチング ルールの詳細な概要

Nginx ロケーション ディレクティブ URI マッチング ルールの詳細な概要

1. はじめに

ロケーション命令は、http モジュールのコア構成です。事前に定義された URL マッチング ルールに従って、ユーザーから送信されたリクエストを受信します。マッチング結果に応じて、リクエストをバックグラウンド サーバーに転送し、不正なリクエストを直接拒否し、403、404、500 エラー処理などを返します。

2. 場所コマンドの構文

location [=|~|~*|^~|@] /uri/ { … } または location @name { … }

3. URIマッチングパターン

場所ディレクティブは、次の 2 つの一致モードに分かれています。
1> 通常の文字列マッチング: = で始まるか、先頭に文字 (~) がない規則
2> 正規表現のマッチング: ~ または ~* で始まる場合は正規表現のマッチングを示し、~* は正規表現が大文字と小文字を区別しないことを示します。

4. ロケーションURIのマッチングルール

nginx はリクエストを受信すると、リクエストの URI 部分をインターセプトし、すべてのロケーション指示で定義されている URI 一致パターンを検索します。サーバー モジュールでは、さまざまなロケーション構成のさまざまな URL 要求と URI 一致パターンに一致するように、複数のロケーション指示を定義できます。全体的な一致の原則は、まず共通の文字列パターンに一致し、次に通常のパターンに一致します。 URI 部分のみを認識します。たとえば、リクエストは次のようになります: /test/abc/user.do?name=xxxx

リクエストが届くと、Nginx がこのリクエストを照合するプロセスは次のようになります。

1> まず、次のように = で始まる完全一致があるかどうかを確認します: location = /test/abc/user.do { … }

2> 最大のプレフィックスの原則に基づいて、通常の一致を再度検索します。次の2つの場所がある場合は、後者が一致します。
* 場所 /test/ { … }
* 場所 /test/abc { … }

3> 共通パターンに一致した後、検索は終了せず、現在の一致結果が一時的に保存され、通常の一致パターンの検索が継続されます。

4> すべての通常のマッチングパターンが位置で最初のマッチング項目を見つけた後、この項目が最終的なマッチング結果として使用されます。したがって、通常のマッチング項目のマッチングルールは定義の順序の影響を受けますが、通常のマッチングパターンは影響を受けません。

5> 正規の一致が見つからない場合は、ステップ3でキャッシュされた結果が最終的な一致結果として使用されます。
6> 一致するものが見つからない場合は404を返す

5. 完全一致とあいまい一致の違い
location =/ { … } と location / { … } の違いは次のとおりです。
* 最初のものは完全一致で、/ リクエストにのみ応答します。/xxx や /xxx/xxxx などのすべてのリクエストはプレフィックスとして一致しません。
* 後者は、/ で始まるすべてのリクエストが一致することを意味します。例: /abc、/test/abc、/test/abc/aaaa

6. 規則的なマッチングと不規則なマッチング

1> location ~ /test/.+.jsp$ { … }: 標準の正規表現構文をサポートする正規一致。
2> location ^~ / { … }: ^~ は、正規の一致をオフにすることを意味します。この共通一致パターンが見つかると、正規の一致パターンの検索は続行されなくなります。

...
http {
  ...
  サーバー{
    聞く 80;
    server_name ローカルホスト;

    位置 / {
      ルートhtml;
      インデックス index.html index.htm;
      # すべてを拒否します。リクエストを拒否し、403 を返します。
      # すべて許可; リクエストを許可}

    場所 /abc {
      すべてを否定する;
    }

    場所 ~ /.+\.jsp$ {
      proxy_pass http://location:9090;
    }

    # /test パスの場所にあるすべての jsp ファイルに一致します ~ /test/.+\.jsp$ {
      proxy_pass http://localhost:8080;
    }

    # さまざまなエラーページを定義します error_page 404 /404.html

    エラーページ 500 502 503 504 /50x.html;
    場所 = /50x.html {
      ルートhtml;
    }

    # @変数定義と同様# error_page 403 http://blog.csdn.net; #この定義は許可されておらず、実装するには@を使用して一時変数を定義する必要があります error_page 403 @page403;
    場所 @page403 {
      proxy_pass http://blog.csdn.net;
    } 
  }
}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Nginx ロケーションマッチングルールの詳細な説明
  • Nginx の書き換え正規マッチング書き換え方法の例
  • Nginx ロケーションマッチングルールの例
  • nginx を使用して複数の条件を一致させる方法
  • Nginx転送マッチングルールの実装
  • nginx マッチングルールの簡単な概要 (推奨)
  • Nginxのさまざまなマッチング方法の詳細な説明

<<:  MySQL 5.7.20 Green Edition のインストールの詳細なグラフィックチュートリアル

>>:  Vueは適切なスライドアウトレイヤーアニメーションを実装します

推薦する

中国における中国語ドメイン名の人気は新たなクライマックスを迎えた

<br />外交部などの中央政府機関、各レベルの地方政府、その他の国家機関や部門が率先し...

mysql8.0 パスワードを忘れた場合の修正とネットコマンドのサービス名が無効になる問題

cmdにnet start mysqlと入力すると、プロンプトが表示されます: サービス名が無効です...

CSSはヒントボックス、バブルボックス、三角形を作成します

場合によっては、ページにプロンプ​​ト ボックスやバブル ボックスが必要になることがあります。CSS...

iframe を使用して Web ページに天気の影響を表示します

CS: ...コードをコピーコードは次のとおりです。 *{マージン:0;パディング:0;リストスタイ...

FileZilla Server の FTP サーバー構成と 425 エラーおよび TLS 警告の解決策の詳細な説明

123WORDPRESS.COM では、FileZilla のダウンロード リンクを提供しています:...

Linux 占有ポートの強制解放と Linux ファイアウォールのポート開放方法の詳しい説明

nginx、mysql、tomcat などのサービスをインストールするときに、使用する必要があるポー...

MySQL シリーズ 6 のユーザーと認証

目次チュートリアルシリーズ1. ユーザー管理1. ユーザーアカウント2. アカウントの追加と削除3....

ウェブサイト製品設計の参考となるいくつかの原則

以下の分析は製品設計原則に関するものですが、そのほとんどはウェブサイト製品に基づいているため、ユーザ...

ウェブサイトのパフォーマンス: 画像とCookieの最適化、モバイルアプリケーションの最適化

前のセクションでは、コンテンツ、サーバー、JavaScript、CSS など、Web サイトのパフォ...

Linux で大きなファイルの内容を消去または削除する 5 つの方法

Linux ターミナルでファイルを操作しているときに、Linux コマンドライン エディターでファイ...

MySQLのnull値に関する小さな問題

今日、null 値をテストしていたところ、小さな問題が見つかりました。ここに記録しました。以前にも遭...

mysql のファイル mysql-bin.000001 とは何ですか? 削除できますか?

ポートを使用して MySQL をインストールした後、しばらくすると /var の容量が不足しているこ...

Windows Server 2016 標準キー アクティベーション キー シリアル番号

Windows Server 2016 アクティベーション キーを皆さんと共有したいと思います。wi...

【HTML要素】タグテキストの詳細説明

1. 基本的なテキスト要素を使用してコンテンツをマークアップするまず表示効果を見てみましょう:対応す...

MySQL 5.7 zip アーカイブ バージョンのインストール チュートリアル

この記事では、MySQL 5.7 zipアーカイブ版のインストールチュートリアルを参考までに紹介しま...