nginxの書き換えは、ジャンプを達成します

公共の数のオリジナル記事:猿周Xiansenプログラム。このプラットフォームは、私の記事のように、私はマイクロチャンネル公衆番号への関心を歓迎し、定期的に更新されていません。
ファイル

nginxの設定の場所の記事はここで説明された、これは主にnginxの書き換えのために説明することでジャンプ。フロントエンドの開発作業の多くは、リバースプロキシサーバとしてnginxのを使用することを選択しますが、通常のビジネスニーズは必然的に書き換えられたURLが発生しますがありますので、nginxの書き換えは、シナリオの使用は何ジャンプ?

  • 同社は、古いドメイン名にアクセスするには、ドメイン名を置き換えるために必要なときに新しいドメイン名へジャンプ
  • CDN静的ファイル要求へジャンプ
  • 別のサイトにジャンプするユーザ機器に応じて、(PC端末、携帯端末)

私は、Apacheサーバのルールベースが非常に強いことを言わなければならないので、ジャンプも非常に簡単ですが、それは我々がnginxの書き換えモジュールの目的が常駐学ぶために必要なものであるので、nginxの書き換えを使用すると、より高い効率をジャンプします。nginxの書き換えが静的書き換えモジュールで、ジャンプ使用シナリオは、次のような状況です。

  • ユーザーは、アクセスURLを変更することができます
  • 動的なURLは、サービスを提供するために、静的なURLとして偽装することができます
  • 古いドメインにアクセスすることができ、新しいドメイン名へジャンプ
  • あなたは別のURL、ディレクトリ、顧客情報などに応じて可変にジャンプすることができます

ジャンプすることができ、それをリライトする方法?

ngx_http_rewrite_module書換要求解析および処理モジュールを使用してnginxの。実際には、機能をリダイレクトするために多少似て、あなたは、別のディレクトリにユーザーの要求を無効にある程度サイトのセキュリティを向上させることができ、URLの書き換えを実現するために書き換えます。裁判官の条件、それ以外でない場合は、サポートを書き換えます。そして、書き換えがリダイレクトを10回までジャンプすることができ、PCREのサポートを必要とし、10回以上は500エラーを返します。リライトモジュールは、設定されたコマンドを含む、記録条件は、変数識別子を作成するために使用されるか、またはロケーションにおける他の変数に送信することができます。nginxの書き換えは、実際にはURLの書き換えを実現するために、正規表現の組み合わせを設定するために、既存のグローバル変数または変数設定コマンドを使用します。

利用シナリオを書き直し

でnginxの中で、次の3つのシナリオを使用してジャンプを実現書き換え:

  • 直接書き換えと一致ジャンプ
  • グローバル変数の使用はジャンプに一致した場合
  • 場所を使用して、試合をジャンプ

だから、書き換え文はだけで、サーバー上の{}、{}であれば、場所{}許可されています。次は命令ならば見てみましょう。

命令であれば

条件が一致したか否かを決定するための命令は、サーバまたは場所に配置された決意結果nginxのに応じて異なる構成を選択します。命令nginxのサポートのみの単一決意した場合、それは複数の決意をサポートしていません。私たちは、単に例を見て:

位置/テスト{
>インデックスのindex.html。

    if ( $scheme = http ){    
        rewrite / https://www.niyueling.cn permanent; 
    }  

    if  ($scheme = https ){    
        echo "if ---> $scheme";  
    }
   }

場所前回の記事では、我々はのは、書き換え文法を見てみましょう、詳細には触れませんについて話しました。

文法を書き換えます

  • 正規表現置換[フラグ]を書き換え

新しいURLに対応した正規表現に一致置き換えるために正規表現正規表現のチェックに基づいて、ユーザによって要求されたURLを書き換えます。構成モジュールと書き換え規則複数の場合は、トップダウンチェックします。交換はジャンプの後に内容でした。置換永久301リダイレクトを指示する場合は、[フラグに】制御ループ機構の識別子として、URLを開始した後、HTTPまたはHTTPSです。

フラグパラメータが導入します

リダイレクト、永久的な、ブレークの最後には、:4つの状態フラグ書き換え文があります。最初の二つは、新しいアドレスの要求を再起動するには、クライアントのブラウザに属し、後者の二つは、内部Webサーバーでのジャンプを達成することです。

  • //またはhttps::、#一時的なリダイレクトをリダイレクトし、直接クライアントに新しいURLを生成書き換えた後、返された一時的なリダイレクトが完了した後に書き換え、クライアントは、相対パスを使用して、要求を再起動します。http持って先頭に//を、ステータスコード:302
  • 永久#永久リダイレクトは、クライアントに直接新しいURLを上書きした後、生成されたリダイレクトを返すために永久的な方法で、クライアントは再び新しい要求を開始し、状態コード:301
  • 最後に#の後、他のその後の書き換え動作の現在の位置に完全に停止を書き換え、その後、新しいURLリライトチェックの新ラウンドを開始した場所での使用では推奨されていません
  • 他の後続の書き換え動作の現在位置に、現在のURLを停止するブレーク#書き換えが完了した後、次いで、書き換え規則マッチングブロックの後に、他の構成に直接ジャンプ、サイクルの終わりが場所で使用することが推奨されます
    ファイル

書き換え文法は、我々はいくつかの方法でジャンプを達成するためにどのように見てみることができます終えました。

(1)の場所に恒久的に新しいドメイン名に古いドメインをリダイレクト

位置/ {
ルート/データ/ HTML。
インデックスのindex.html;
書き換え/ http://www.niyueling.cn永久;
}

ここでは、一時的および恒久的なリダイレクトリダイレクトの違いに言及する必要があります。

一時的なリダイレクト新しいドメイン名解決レコードはキャッシュされませんが、恒久的なリダイレクトが解析され、レコード新しいドメイン名をキャッシュします。

(2)HTTP、HTTPSに自動的にジャンプ

時には、プロジェクトの会社のニーズがhttpsを使用しているサイト全体が必要になり、ユーザーエクスペリエンスのためのこの時間は、我々は、ユーザーがHTTPサイトを訪問したときに自動的にHTTPSサイトにジャンプする必要があります。

LOCATION / {
>ルートの/ opt /ブログ、
インデックスindex.htmlを、
IF($スキーム= HTTP){
リライト/ https://www.niyueling.cn永久は;
}
}
ユーザがHTTPプロトコルを要求する場合は、上記の構成は、実際の時間であります対応するHTTPSサイトへの書き換えジャンプを使用しています。文は削除することができない場合でも、それ以外の場合は、無限ループでキャッチされます。

(3)ユーザーが要求した場合、URLは、ゴーホームは存在しません。

場所/ {
ルートは/ opt /ブログ。
インデックスのindex.html;
(!-f $のREQUEST_FILENAME){場合
(。*)書き換えhttp://www.niyueling.cn
}
}

(4)盗難防止チェーンを達成するために

盗難防止チェーンは、実際にリファラマークは、ジャンプを来たユーザーインターフェースに関する情報を記録することができ、フロントエンドはリファラ運ぶ達成するために基づいています。nginxのことで効果的な情報確認要求モジュールungx_http_referrer_moduleは、セキュリティチェーン機能を実現するかどうかリファラ

^〜LOCATION / {テスト
ルートの/ opt /ブログを、
インデックスのindex.html;
何もブロックされていないSERVER_NAMES valid_referers 。.niyueling.cn www.niyuelingを
。api.online.test / V1 / .googleホストリストが~~#有効な.baiduを定義します。リファラ
($のinvalid_referer)IF:{#他のアクセスリファラを使用することが有効である場合は
、403を返す#403は、ステータスコードを返します
}
}

あなたは私の記事のような場合は、私の個人的な歓迎の注目公衆番号へ
ファイル

おすすめ

転載: www.cnblogs.com/niyueling/p/11563357.html