Nginx Rewrite の使用シナリオと設定方法の分析

Nginx Rewrite の使用シナリオと設定方法の分析

Nginx Rewriteの使用シナリオ

1. URL アドレスジャンプ。たとえば、ユーザーが pm.com にアクセスすると baidu.com にリダイレクトされ、ユーザーが http 経由でアクセスすると https にリダイレクトされます。

2. URL擬似静的は、動的ページを静的ページとして表示し、動的URLアドレスの過剰なパラメータが外部に露出することを減らし、セキュリティを向上させる技術です。

3. 検索エンジンのSEO最適化は、検索エンジンへのエントリをサポートするためにURLパスに依存しています。

4. ユーザーが閲覧する URL は、より標準化された外観になり、開発者や製品担当者のニーズを満たすように調整できます。

設定構文

正規表現の置換を書き換える [フラグ];

4つの旗

last は後続の書き換え命令セットの処理を停止し、場所のスコープから抜け出して、変更された URI に一致する場所の検索を開始します。URL アドレスは変更されません。

break は後続の書き換え命令セットの処理を停止し、ロケーション スコープからジャンプせず、再検索せず、マッチングを終了し、URL アドレスは変更されません。

リダイレクトは 302 一時リダイレクトを返します。ブラウザのアドレス バーにはリダイレクトされた URL が表示され、クローラーは URL データベースを更新しません。

permanentは301パーマネントリダイレクトを返し、ブラウザのアドレスバーにはリダイレクトされたURLが表示され、クローラーはURLデータベースを更新します。

注意:lastとbreakを使用するとブラウザのアドレスは変更されませんが、redirectとpermanentを使用すると変更されます。

例えば:

場所 /abc/ {
  書き換え ^/abc/(.*) /whsir/$1 break;
  401 を返します。
}
場所 /opq/ {
  最後に ^/opq/(.*) /whsir/$1 を書き換えます。
  402 を返します。
}
場所 /whsir/ {
  403 を返します。
}

abcを入力した後、whsirの内容が一致する場合は200を返し、そうでない場合は404を返します。

opqを入力した後、whsirの内容が一致する場合は403を返し、そうでない場合は404を返します。

last と break は成功または失敗のステータス コードのみを返しますが、redirect と permanent は成功または失敗を返す前にまず 302 または 301 を返します。

よく使用される Nginx グローバル変数:

例: http://www.pm.com:99/aa/bb/test.php

$ホスト www.pm.com

$サーバーポート 99

$request_uri /aa/bb/test.php

$ドキュメントルート /pm_code

$リクエストファイル名 /pm_code/aa/bb/test.php

ケース1: 外部ジャンプ

lb01仮想マシンを開き、以前のカスタム構成ファイルを閉じて、新しい/etc/nginx/conf.d/rewrite.confを作成します。

注: ^/ は、ルートで始まるすべての URL (ここではルート ディレクトリは /pm_code、対応するドメイン名は www.pm.com) が Baidu にリダイレクトされることを意味します。

/etc/nginx/nginx.conf ファイルを変更する

エラー ログ レベルを通知に変更して、リダイレクト情報を記録できるようにします (debug、info、notice、warn、error、crit、より多くの情報が記録されます)

httpモジュールに1行追加する

rewrite_log on; (書き換えログをオンにする)

テスト

ブラウザのアドレスバーにwww.pm.comと入力すると(ホストで既に設定済み)、Baiduのホームページにリダイレクトされます。

ケース2: 内部ジャンプ

/etc/nginx/conf.d/rewrite.conf の内容を変更する

/pm_codeにファイル2.html(コンテンツ222)を作成し、ブラウザにwww.pm.com/1.htmlと入力します。

エラーログの記録を表示する

リターンの使用

上記の方法では、ブラウザのアドレスバーに 1.html が表示され、Web ページの内容は 2.html の内容になります。アドレスバーに 2.html を表示したい場合は、location の内容を return 302 /2.html; に変更するか、 .* /2.html redirect; と書き換えてください。

正規表現を使用する

例: www.pm.com/2020/* を www.pm.com/2019/* にリダイレクトします。

括弧は全体を表し、$1 は最初の括弧内の内容を表します。

http を https にリダイレクトする

注: nginx 1.14 以降では、ssl on と書く必要はありません。代わりに、listen フィールドに listen 443 ssl と書きます。

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

以下もご興味があるかもしれません:
  • Nginx URL 書き換えメカニズムの原理と使用例
  • Nginx Rewrite の使用シナリオとコード例の詳細な説明
  • Nginx の書き換え正規マッチング書き換え方法の例
  • nginx のロケーションと書き換えの使用法の詳細な説明
  • nginx rewriteを使用してURLをリダイレクトする方法
  • よく使われるnginxの書き換えルールの詳細な説明
  • nginx の設定場所の概要と書き換えルールの記述の詳細な説明
  • URLパラメータに応じたnginxの書き換えと場所の詳細な説明

<<:  React+tsは二次リンク効果を実現します

>>:  MySQL でテーブルを削除する 3 つの方法 (要約)

推薦する

MySQL 最適化ソリューション リファレンス

最適化によって発生する可能性のある問題最適化は必ずしも単純な環境で実行されるわけではなく、実稼働環境...

Vue プロジェクトで mock を使用する方法をご存知ですか?

目次最初のステップ: 2 番目のステップは、request.js で関連する構成を行うことです。re...

Typescriptを使用してWeChatミニプログラムでプロジェクトを作成する方法

プロジェクトを作成するWeChat開発者ツールでプロジェクトを作成し、言語でTypeScriptを選...

MySQLデータを復元する2つの方法

1. はじめに少し前、開発者がテスト環境や本番環境で誤った操作をし、データベースを誤って削除/更新し...

MySQL ユーザー権限管理の分析例

この記事では、MySQL ユーザー権限管理の例について説明します。ご参考までに、詳細は以下の通りです...

Linux 面接で最もよく聞かれる 10 の質問のまとめ

序文Linux システムの運用および保守エンジニア職の面接を受ける場合は、次の 10 個の最も一般的...

docker runとstartの違い

docker における実行と開始の違いDocker run はミラーイメージを指定します。そしてdo...

Apache Tomcat と IDEA エディターの統合に関する詳細なチュートリアル

1. Apache Tomcat 公式サイトから Tomcat 圧縮パッケージをダウンロードします。...

macOS SierraにApache2.4+PHP7.0+MySQL5.7.16をインストールする

Mac システムには PHP と Apache が付属していますが、必要なバージョンではない場合があ...

MySQLのスイッチングデータ保存ディレクトリの実装方法

MySQLのスイッチングデータ保存ディレクトリの実装方法今日、仕事中に、mysql が保存されている...

ウェブページ制作TDは隠し表示もオーバーフロー可能

おそらく、この記事にこのようなタイトルを付けると、誰かがこう尋ねるでしょう。「なぜまだテーブルに注目...

Zabbix で監視項目と集約されたグラフを設定するためのサンプルコード

1. ローカルマシンを監視するためにZabbixエージェントをインストールするエージェントソフトウェ...

Vue.jsは9グリッド画像表示モジュールを実装します

Vue.js を使用して、クリックしてズームできる 9 グリッドの画像表示モジュールを作成しました。...

Nginx のアクセス制御とパラメータ調整方法

Nginx グローバル変数Nginx には、$variable 名を通じて使用できるグローバル変数が...

MySQL 日付処理関数の例の分析

この記事は主にMySQLの日付処理関数のサンプル分析を紹介します。この記事ではサンプルコードを詳細に...