ホームページ  >  記事  >  運用・保守  >  Nginx の位置マッチングとリライトジャンプメソッド

Nginx の位置マッチングとリライトジャンプメソッド

WBOY
WBOY転載
2023-05-22 15:25:191744ブラウズ
    1. リライトジャンプの実装

    Nginx: URL のリライトと ngx_http_rewrite_module モジュールによる if 条件判定をサポートしますが、else はサポートしません

    # Jump: ある場所から別の場所にジャンプします。ループは最大 10 回実行でき、その後 nginx は 500 エラーを返します

    PCRE サポート: Perl と互換性のある正規表現構文ルールのマッチング

    Rewriteモジュールセット命令: 新しい変数を作成し、それらに値を代入します

    2. 実行シーケンスを書き換えます

    ①サーバーブロックで書き換え命令を実行します

    ②実行位置のマッチング

    #3. 選択した場所で書き換えコマンドを実行します

    ##3. ジャンプ シナリオを書き換えます

    #ユーザーが参照する URL を調整して、より標準化され、開発および製品担当者のニーズに合わせて見えるようにします。

    検索エンジンが Web サイトのコンテンツを検索し、より良いユーザー エクスペリエンスを提供できるようにするために、企業は動的 URL アドレスを静的アドレスとして偽装してサービスを提供します

    URL が新しいドメイン名に変更された後、企業は動的 URL アドレスを静的アドレスとして偽装してサービスを提供します。 、古いアクセスは新しいドメイン名にジャンプします。たとえば、JD.com の 360buy.com へのアクセスは jd.com

    サーバー上の特定のビジネス調整 (特殊変数に基づく URL など) 、ディレクトリ、クライアント情報の調整など

    4. 文法とflgタグの説明

    文法書き換え [flag];

    regex : 通常のマッチングルールを示します

    replacement: ジャンプ後の内容を示します

    flag: リライトがサポートするフラグマークを示します

    フラグマークの説明:

    最後: この記事 ルールの照合が完了した後、新しいロケーション URI ルールを下位に照合し続けます。通常はサーバーで使用され、
    • break: このルールは終了します。マッチングが完了し、後続のルールと一致しなくなるとき。通常は location
    • redirect で使用されます。一時リダイレクト 302 を返します。ブラウザ アドレスにはジャンプ後の URL アドレスが表示されます
    • permanent : 301 永続リダイレクトに戻り、ブラウザのアドレス バーにはジャンプ後の URL アドレスが表示されます。
    • # 5. Nginx で一般的に使用される正規表現記号

    #6. 場所

    Nginx の位置マッチングとリライトジャンプメソッド#1. 分類

    ##場所は、次の 3 つのカテゴリに大別できます。

    #完全一致: location = / {…}

    一般一致: location / {…}
    • 通常の一致: location ~ / {…}
    • 2. 共通の一致ルール
    • 3. 優先度

    最初の完全一致=Nginx の位置マッチングとリライトジャンプメソッド

    2 番目に接頭辞の一致 ^~
    • 2 番目にファイル内の順序での通常の一致~ または ~*
    • その後、変更を加えずにプレフィックス マッチング、つまり一般マッチング
    • が最終的に / 一般マッチングに渡されます。
    • 4. 例
    • localtion = / {}

      = は / と完全に一致し、文字列を一致させることはできません。ホスト名の後に配置されます。たとえば、/ と /xcf にアクセスする場合、/ は一致しますが、/xcf は一致しません。一致
    location / {}

    すべてのアドレスが / で始まるため、これはルールは、/ および /data へのアクセスなど、すべてのリクエストに一致し、その後、/ に一致し、/data にも一致します。ただし、

    にも一致しますが、その後に正規表現が続く場合は、最も長い文字列と最初に一致します (最長match)

    location /documents/ {}

    が一致します /documents/ で始まるアドレスの後、引き続き他の location

    location /documents/ を検索する必要がありますabc {}

    /documents/abc で始まる任意のアドレスと一致します。一致後も、他の​​場所の検索を続行するには

    他の場所の背後にある正規表現が一致しない場合にのみ、この場所は一致します。使用されます

    location ^~ /images/ {}

    /images/ で始まる任意のアドレスと一致します。一致した後、通常のルールの検索を停止し、この

    location ~ * .(gif|jpg|jpeg)$ {}

    gif、jpg、jpeg で終わるすべてのリクエストに一致

    #ただし、/images/ でリクエストされたすべての画像は場所によって処理されます ^~ /images/、^~ の方が優先度が高いため、この規則が到着します。

    location /images/abc {}

    最長の文字は、最も低い文字である /images/abc と一致します。他の場所の検索を続けると、^~ と ~ 存在

    location ~ /images/abc {}

    が /images/abc で始まるものと一致します。 2 番目です。これは、場所 ^~ /images が削除された場合にのみ採用されます

    location /images/abc/1.html {}

    /images/abc/1.html と一致します通常の ~ /images/abc/1.html と比較すると、通常の優先度が高くなります 高

    優先度の概要:

    (場所 = フル パス) > (場所 ^~ path) > (location ,* Regular sequence) > (location 部分の開始パス) > ; (location /)

    5. マッチング ルールの定義

    ① 最初に必要なルール:

    は Web サイトのルートに直接一致します。ドメイン名を使用して Web サイトのホームページにアクセスすることがより頻繁になります。これを使用すると、公式 Web サイトなどの処理が高速化されます。

    静的なホームページにすることも、バックエンドの「アプリケーション サーバー」 (PHP、Apache) に直接転送することもできます (アプリケーション サーバーは次の図に示されています)

    Nginx の位置マッチングとリライトジャンプメソッド# #

    location / {
        root
        html;
        index
        index.html index.html;
    }

    ②2番目の必須ルール:

    httpサーバーとしてのnginxの強みである静的ファイルリクエストの処理(①静的リクエスト処理能力②高い同時処理能力③低リソース消費)

    があります。ディレクトリ マッチングまたはサフィックス マッチングの 2 つの構成モード。いずれかを選択するか、それらを組み合わせて使用​​します。

    location ^~ /static/ {
        root /webroot/static/;
    }
     
    location ~* \.(html|gif|jpg|jpeg|png|css|js|ico)$ {
        root /webroot/res/ ;
    }

    ③3 番目に必要なルール:

    は、「.php で動的リクエストを転送する」と「.php で動的リクエストを転送する」を使用するなどの一般的なルールです。バックエンド アプリケーション サーバーへの .jsp サフィックス

    非静的ファイル リクエストは、デフォルトでは動的リクエストです (ジャンプ/リバース プロキシ)

    upstream tomcat_server {
    		192.168.126.12:80
    		192.168.126.23:80
    }
    location / {
        proxy_ pass http://tomcat_server;

    概要:

    1. rewrite と location を比較します。

    同じ点: どちらもジャンプを実装します。

    相違点: rewrite は、同じドメイン名内のリソースを取得するためのパスを変更します。

    Location は次のとおりです。パスのクラスへのアクセスまたはリバース プロキシを制御します。他のマシンに proxy_pass することもできます

    #2.rewrite はその場所に書き込まれ、実行シーケンス

      サーバーブロックで書き換え命令を実行します
    • 位置マッチングを実行します
    • 選択された位置を実行します # の書き換え命令
    3. 場所の優先順位はどのように配置されますか?

    特定のファイルに一致する

    (場所 = フル パス) > (場所 ^~ フル パス) > (場所 ~* フル パス) > (場所 ~ 完全なパス)パス)> (場所 /)

    一致するディレクトリを使用してファイルにアクセスします

    (場所 = ディレクトリ) > (場所 ^~ ディレクトリ) > (場所 ~ ディレクトリ) > (location ~* directory)> (location /)

    4. 大文字と小文字を区別しない場合にのみファイルとディレクトリが変更されるのはなぜですか?

    正規表現 式: 目的は次のとおりです。

    ファイルをできるだけ正確に一致させる - できるだけ正確に一致させ、大文字と小文字を区別して正確に一致させます。

    ディレクトリを区別しません - より正確に一致させます。大文字と小文字を区別します。 、より正確で優先度が高い

    以上がNginx の位置マッチングとリライトジャンプメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。