Nginx URL 書き換えメカニズムの原理と使用例

Nginx URL 書き換えメカニズムの原理と使用例

URL 書き換えは、Web サイトの優先ドメインを決定するのに役立ちます。同じリソース ページの複数のパスの 301 リダイレクトは、URL の重みを集中させるのに役立ちます。

Nginx URL 書き換えの概要

Apache やその他の Web サービス ソフトウェアと同様に、rewrite の主な機能は URL アドレスをリダイレクトすることです。 Nginx の書き換え機能には PCRE ソフトウェアのサポートが必要です。つまり、ルールのマッチングは Perl 互換の正規表現ステートメントを通じて実行されます。デフォルトのパラメータでnginxをコンパイルすると、書き換えモジュールがサポートされますが、PCREのサポートも必要です。

rewrite は URL 書き換えを実装するためのキー命令です。regex (正規表現) 部分に従って置換にリダイレクトし、フラグタグで終了します。

書き換え構文の形式とパラメータ構文は次のとおりです。

rewrite <正規表現> <置換> [フラグ];

キーワード通常置換コンテンツフラグタグ

キーワード: キーワード error_log は変更できません

正規表現: ルールマッチングのための Perl 互換の正規表現ステートメント

置換コンテンツ: 正規表現に一致するコンテンツを置換コンテンツに置き換えます

フラグタグ: 書き換えによってサポートされるフラグタグ

フラグの説明:

  • last #このルールに一致した後、新しい場所URIルールに一致し続けます
  • break #このルールは一致した時点で終了し、後続のルールには一致しません
  • リダイレクト #302 一時的なリダイレクトを返すと、ブラウザのアドレスにはジャンプ後の URL アドレスが表示されます
  • permanent #301 永続リダイレクトを返すと、ブラウザのアドレスバーにジャンプ後の URL アドレスが表示されます。

書き換えパラメータのラベル セグメントの位置:

サーバー、場所、場合

例:

^/(.*) http://www.czlun.com/$1 を永久に書き換えます。

例:

  • rewriteは固定キーワードであり、書き換えマッチングルールの開始を示す。
  • 正規表現部分は ^/(.*) で、完全なドメイン名とそれに続くパス アドレスに一致する正規表現です。
  • 置換部分は http://www.czlun.com/$1 $1 であり、これは正規表現部分 () の内容から取得されます。一致が成功した後にジャンプする URL。
  • フラグ部分 permanent は永続的な 301 リダイレクトフラグを示し、新しい http://www.czlun.com/$1 アドレスにジャンプすることを意味します。

regex 一般的な正規表現の説明

キャラクター

説明する

\

次の文字を特殊文字、リテラル文字、または後方参照としてマークします。たとえば、「\n」は改行文字に一致し、「\$」は「$」に一致します。

^

入力文字列の先頭に一致します

$

入力文字列の末尾に一致します

*

直前の文字と 0 回以上一致します。たとえば、「ol*」は「o」や「ol」、「oll」に一致します。

+

直前の文字と 1 回以上一致します。たとえば、「ol+」は「ol」、「oll」、「oll」に一致しますが、「o」には一致しません。

?

直前の文字に 0 回または 1 回一致します。たとえば、「do(es)?」は「do」または「does」に一致します。「?」は「{0,1}」に相当します。

「\n」を除く任意の 1 文字と一致します。「\n」を含む任意の文字と一致させるには、「[.\n]」などのパターンを使用します。

(パターン)

括弧内のパターンに一致し、後で対応する一致を取得できます。$0...$9 属性は、括弧内の一致するコンテンツを取得するためによく使用されます。括弧に一致させるには、\(Content\) が必要です。

エンタープライズアプリケーションシナリオの書き換え

Nginx の書き換え機能は企業で広く使用されています。

  • u ユーザーが参照する URL を調整して、より標準化された外観にし、開発者や製品担当者のニーズを満たすことができます。
  • u 検索エンジンがウェブサイトのコンテンツをインデックスし、より良いユーザーエクスペリエンスを提供できるように、企業は動的 URL アドレスを静的アドレスとして偽装してサービスを提供します。
  • u URL が新しいドメイン名に変更されると、以前の訪問は新しいドメイン名にリダイレクトされます。たとえば、JD.comの360buy.comにアクセスすると、jd.comにリダイレクトされます。
  • u 特殊な変数、ディレクトリ、クライアント情報などに基づいて URL を調整します。

Nginx 書き換え設定プロセスの紹介

(1)書き換え文を作成する

vi conf/vhost/www.abc.com.conf

#vi 仮想ホスト設定ファイルを編集する

ファイルの内容

サーバー{
    聞く 80;
    サーバー名 abc.com;
    書き換え^/(.*) http://www.abc.com/$1 永続的;
}
サーバー{
    聞く 80;
    サーバー名 www.abc.com;
    位置 / {
        ルート /data/www/www;
        インデックス index.html index.htm;
    }
    error_log ログ/error_www.abc.com.log エラー;
    access_log ログ/access_www.abc.com.log メイン;
}

または

サーバー{
    聞く 80;
    サーバー名 abc.com www.abc.com;
    $host が 'www.abc.com' の場合
        書き換え^/(.*) http://www.abc.com/$1 永続的;
    }
    位置 / {
        ルート /data/www/www;
        インデックス index.html index.htm;
    }
    error_log ログ/error_www.abc.com.log エラー;
    access_log ログ/access_www.abc.com.log メイン;
}

(2)サービスを再起動する

確認後、再起動してください。操作は以下のとおりです。

nginx -t

#結果がOKで成功と表示されたら、再起動できます

nginx -s リロード

(3)ジャンプ効果を確認する

ブラウザを開いてabc.comにアクセスしてください

ページを開くと、URL アドレス バーの abc.com が www.abc.com になり、URL が正常に書き換えられたことが示されます。

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

以下もご興味があるかもしれません:
  • Nginxの書き換えモジュールの詳細な説明
  • Nginx の書き換え正規マッチング書き換え方法の例
  • nginx のロケーションと書き換えの使用法の詳細な説明
  • nginx rewriteを使用してURLをリダイレクトする方法
  • URLパラメータに応じたnginxの書き換えと場所の詳細な説明
  • Nginx 書き換え 書き換えの基本と例の共有
  • Nginx Rewrite ルールと使用方法の紹介とスキルの例
  • nginx の書き換え擬似静的設定パラメータと使用例
  • nginx 書き換え関数の使用シナリオの分析

<<:  mysqldump を使用した MySql のインポートおよびエクスポート方法の概要

>>:  JavaScript における一般的な配列操作

推薦する

Linux仮想マシンの静的IPアドレスを構成するための手順を完了します

序文多くの場合、仮想マシンを使用します。たとえば、一部のテストは検出されません。何かを壊すことを心配...

ウェブページを作成するために最もよく使用されるHTMLタグ

1. よく使われるHTMLタグの最適化HTML は Web 編集者にとって基本的なスキルであるべきで...

入力要素 [type="file"] を使用する場合のスタイルのカスタマイズとブラウザの互換性の問題に関する議論

この2日間、Baixing.comの筆記試験問題を解いているときに、このような問題に遭遇しました。H...

Nginx に lua-nginx-module モジュールをインストールする方法

ngx_lua_module は、lua パーサーを nginx に埋め込み、lua 言語で記述され...

VMware、nmap、burpsuite インストール チュートリアル

目次VMware バープスイート1. 仮想マシンイメージとVMwareのインストールと使用2. 仮想...

CSSでプロセスナビゲーション効果を実現する(3つの方法)

CSS によりプロセスナビゲーション効果を実現します。具体的な内容は以下のとおりです。 ::tip...

Navicat Premier の MySQL へのリモート接続エラー 10038 の解決方法

MySQL へのリモート接続が失敗する場合は、次の理由が考えられます。 1. 若い男性/女性の方は、...

ネイティブJSは非常に見栄えの良いカウンターを実装します

今日は、ネイティブ JS で実装された見栄えの良いカウンターを紹介します。効果は次のとおりです。 以...

CSS ラベルモード表示プロパティの詳細な説明

コードは次のようになります。 <!DOCTYPE html> <html> ...

CSS3 で背景の透明化と不透明テキストを実装するサンプルコード

最近、画像上に半透明の背景でテキストを表示する必要があるという要件に遭遇しました。その効果は次のよう...

Apache Web サーバーを使用して 2 つ以上のサイトを構成する方法

人気があり強力な Apache Web サーバーで 2 つ以上のサイトをホストする方法。前回の記事で...

JSはビデオの再生速度を制御するための簡単なサンプルコードを実装します

導入以前、ある問題に気づきました。学習ビデオを視聴しているとき、動きが遅すぎる、先生が黒板に書くのに...

Ubuntu LinuxにOracle Java 14をインストールする方法

最近、Oracle は Java 14 (または Oracle JDK 14) の一般公開を発表しま...

nginx リクエスト ヘッダー データ読み取りプロセスの詳細な説明

前回の記事では、nginx がリクエスト ラインのデータを読み取って、リクエスト ラインを解析する方...

MySQL はデータベースを動的に更新します スクリプト例の説明

具体的なupgradeスクリプトは次のとおりです。インデックスを動的に削除する アップグレードが存在...