Nginx Rewriteモジュールを使用するいくつかのシナリオ

Nginx Rewriteモジュールを使用するいくつかのシナリオ

アプリケーションシナリオ1: ドメイン名ベースのリダイレクト

会社の古いドメイン名は www.accp.com です。ビジネスニーズの変化により、新しいドメイン名 www.kgc.com に変更する必要があります。

1. 古いドメイン名は廃止できない
2. 古いドメイン名から新しいドメイン名に移動し、パラメータを変更しない

導入環境

Linux サーバー (192.168.142.130)
テストホスト Windows 7

1. Nginxサービスをインストールする

[root@localhost ~]# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
#nginx の公式ソースをインストールします [root@localhost ~]# yum install nginx -y  
#yum で nginx をインストール

2. nginxのデフォルト設定ファイルを変更する

[root@localhost ~]# vim /etc/nginx/conf.d/default.conf ##デフォルトの設定ファイル server を変更する {
    聞く 80;
    server_name www.accp.com; ##ホスト名を変更する#charset koi8-r;
    access_log /var/log/nginx/www.accp.com-access.log main; ##ログサービスを開く

3. バインド解決サービスをインストールする

[root@localhost ~]# yum install bind -y

4. メイン設定ファイル(named.conf)を変更する

[root@localhost ~]# vim /etc/named.conf 
オプション {
                listen-on port 53 { any; }; ##すべてをリッスンします...
                allow-query { any; }; ##すべて許可

5. ゾーン構成ファイル(named.rfc1912.zones)を変更します。

[root@localhost ~]# vim /etc/named.rfc1912.zones ##ゾーン設定ファイルを構成する zone "accp.com" IN {
                タイプマスター;
                ファイル "accp.com.zone"; ##accp ゾーン データ構成ファイル allow-update { none; };
};

6. 地域データ構成ファイル(accp.com.zone)を変更する

[root@localhost ~]# cd /var/named/ 
[root@localhost named]# cp -p named.localhost accp.com.zone ##テンプレートをコピー [root@localhost named]# vim accp.com.zone ##ゾーン構成ファイル $TTL 1D を変更します
@ IN SOA @ rname.invalid. (
                                    1D ; 更新
                                    1H;再試行
                                    1W ; 期限切れ
                                    3H ) ; 最小
                NS@
                127.0.0.1 です
www IN A 192.168.142.130 ##ローカルアドレス [root@localhost named]# systemctl start named ##DNS サービスを開始 [root@localhost named]# systemctl stop firewalld.service ##ファイアウォールを閉じる [root@localhost named]# setenforce 0
[root@localhost named]# systemctl start nginx ##nginx サービスを開始

7. テストマシンでWebページをテストする

8. 設定ファイルを変更し、ドメイン名ジャンプを設定する

[root@localhost named]# vim /etc/nginx/conf.d/default.conf ##設定ファイルサーバを変更する {
      聞く 80;
      サーバー名 www.accp.com;

      #文字セット koi8-r;
      access_log /var/log/nginx/www.accp.com-access.log メイン;

      位置 / {
          if ($host = "www.accp.com"){ ##ドメイン名が古いドメイン名の書き換えである場合に一致します ^/(.*)$ http://www.kgc.com/$1 permanent; ##その後、ジャンプを新しいドメイン名に永続的に設定します}
          ルート /usr/share/nginx/html;
          インデックス index.html index.htm;
      }

9. 新しいドメイン名解決を追加する

[root@localhost named]# vim /etc/named.rfc1912.zones 

ゾーン "kgc.com" IN {
                タイプマスター;
                ファイル "kgc.com.zone"; ##accp ゾーンデータ構成ファイル allow-update { none; };
};

[root@localhost named]# cp -p /var/named/accp.com.zone /var/named/kgc.com.zone
## 地域データ設定ファイルを kgc のデータ設定ファイルとしてコピーします [root@localhost named]# systemctl restart named ## 解決サービスを再起動します [root@localhost named]# systemctl restart nginx ## nginx サービスを再起動します

10. 古いドメイン名を使用してアクセスし、Webページのジャンプを確認します


11. 古いドメイン名の後にパラメータを追加し、新しいドメイン名にジャンプするときにパラメータがあるかどうかを確認します。


アプリケーションシナリオ2 - クライアントIPに基づくアクセスリダイレクト

会社のビジネスバージョンはオンラインです。すべてのコンテンツにアクセスするすべての IP に、固定メンテナンス ページが表示されます。会社の IP のみ正常にアクセスできます。

1. Nginxのデフォルト設定ファイルを変更する

[root@localhost ~]# cd /etc/nginx/conf.d/
[root@localhost conf.d]# vim default.conf 

サーバー{
    聞く 80;
    サーバー名 www.accp.com;
    #文字セット koi8-r;
    access_log /var/log/nginx/www.accp.com-access.log メイン;
    #IPが合法かどうかを設定します。set $rewrite true; ##変数をtrueに設定します。#IPが合法かどうかを判断します。
    ($remote_addr = "192.168.142.120")の場合{
        $rewrite を false に設定します。## 有効な IP に一致し、変数を false に設定して、ページを通常どおりリダイレクトします}
    # 不正な IP を判断してマークします if ($rewrite = true){ ## 不正な IP と一致し、メインの Web ページにジャンプします rewrite (.+) /main.html;
    }
    #タグに一致してサイトにジャンプします location = /main.html { ##ルートに完全一致 /usr/share/nginx/html; ##サイトパス}

    位置 / {
        ルート /usr/share/nginx/html;
        インデックス index.html index.htm;
    }

2. 違法IPサイトやメインウェブページの作成

[root@localhost conf.d]# cd /usr/share/nginx/html/ ##サイトに切り替える [root@localhost html]# vim main.html ##不正IPアクセスWebページの内容を編集する <h1>これはテストWebです</h1>
[root@localhost html]# systemctl restart nginx ##Nginx サービスを再起動します

3. テストウェブページにアクセスする


アプリケーションシナリオ3 - 古いドメイン名と新しいドメイン名に基づいてリダイレクトし、ディレクトリを追加する

ドメイン名 http://bbs.accp.com のすべての投稿を http://www.accp.com/bbs にリダイレクトし、ドメイン名のリダイレクト後もパラメータを変更しない

1. Nginxのデフォルト設定ファイルを変更する

[root@localhost ~]# cd /etc/nginx/conf.d/
[root@localhost conf.d]# vim default.conf ##デフォルトの設定ファイル server を変更する {
    聞く 80;
    server_name bbs.accp.com; ##サービス名を変更#charset koi8-r;
    access_log /var/log/nginx/www.accp.com-access.log メイン;
    location /post { ##投稿ディレクトリを一致させるために場所を使用する rewrite (.+) http://www.accp.com/bbs$1 permanent; ##永続的なリダイレクトジャンプ}

2. DNSゾーンデータ構成ファイル(accp.com.zone)を変更する

[root@localhost conf.d]# cd /var/named/
[root@localhost named]# vim accp.com.zone ##地域データ設定ファイル $TTL 1D を変更する
@ IN SOA @ rname.invalid. (
                          0 ; シリアル
                          1D ; 更新
                          1H;再試行
                          1W ; 期限切れ
                          3H ) ; 最小
        NS@
        127.0.0.1 です
192.168.142.130 の掲示板
[root@localhost named]# systemctl restart named ## 解決サービスを再起動します [root@localhost named]# systemctl restart nginx ## Nginx サービスを再起動します [root@localhost named]# echo "nameserver 192.168.142.130" > /etc/resolv.conf 
##解決サーバーのアドレスをローカル解決設定ファイルに入力します

3. Webページをテストする


アプリケーションシナリオ4 - パラメータマッチングに基づくジャンプ

ブラウザアクセス: http://www.accp.com/100-(100|200)-100.html http://www.accp.com ページにジャンプ

1. Nginxのデフォルト設定ファイルを変更する

[root@localhost ~]# cd /etc/nginx/conf.d/
[root@localhost conf.d]# vim default.conf 

サーバー{
    聞く 80;
    サーバー名 www.accp.com;
    #文字セット koi8-r;
    access_log /var/log/nginx/www.accp.com-access.log メイン;
    ($request_uri ~ ^/100-(100|200)-(\d+).html$) の場合{    
    ## 100 で始まり (100|200)、HTML 書き換え (.*) で終わる 1 つ以上の整数を含む正規表現に一致します http://www.accp.com permanent; ## ホームページに恒久的にリダイレクトします}

2. DNSゾーンデータ構成ファイルを変更する

  [root@localhost conf.d]# vim /var/named/accp.com.zone ##地域データ設定ファイルを変更する www IN A 192.168.142.130  
  [root@localhost conf.d]# systemctl restart named ##解析サービスを再起動します [root@localhost conf.d]# systemctl restart nginx ##Nginxサービスを再起動します

3. Webページをテストする


アプリケーションシナリオ5 - ディレクトリ内のすべてのPHPファイルに基づいてジャンプする

ホームページにジャンプするには、http://www.accp.com/upload/1.php にアクセスしてください。

1. Nginxのデフォルト設定ファイルを変更する

[root@localhost ~]# cd /etc/nginx/conf.d/
  [root@localhost conf.d]# vim default.conf ##デフォルトの設定ファイル server を変更する {
      聞く 80;
      サーバー名 www.accp.com;
      #文字セット koi8-r;
      access_log /var/log/nginx/www.accp.com-access.log メイン;
      location ~* /upload/.*\.php$ { ## 一致は大文字と小文字を区別しません。アップロード後に .php で終わる 0 個以上の書き換えに一致します (.+) http://www.accp.com permanent; ## ホームページにジャンプします}
  [root@localhost conf.d]# systemctl restart nginx ##Nginx サービスを再起動します

2. テストウェブページ


アプリケーションシナリオ6 - 最も一般的なURLリクエストジャンプに基づいて、特定のページにアクセスしてホームページにジャンプします。

1. Nginxのデフォルト設定ファイルを変更する

[root@localhost ~]# cd /etc/nginx/conf.d/
  [root@localhost conf.d]# vim default.conf ##Nginxのデフォルト設定ファイルを変更する server {
      聞く 80;
      サーバー名 www.accp.com;
      #文字セット koi8-r;
      access_log /var/log/nginx/www.accp.com-access.log メイン;
      location ~* ^/abc/123.html { ## 特定のウェブページを一致させる rewrite (.+) http://www.accp.com permanent; ## ホームページにジャンプ}
  [root@localhost conf.d]# systemctl restart nginx ##Nginx サービスを再起動します

2. テストウェブページ


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

以下もご興味があるかもしれません:
  • Nginx 書き換えジャンプの適用シナリオの詳細な説明

<<:  MySQL (InnoDB) がデッドロックを処理する方法の詳細な説明

>>:  Vueはアンカー配置機能を実装します

推薦する

iOS、Android、ミニプログラムアプリの敷居の低い開発のためのフロントエンドフレームワークを詳しく解説

現在、クロスプラットフォーム開発技術はもはや新しい話題ではありません。市場にはいくつかのオープンソー...

npm 淘宝ミラー変更説明

1. トップレベルの使用法1. cnpmをインストールする npm i -g cnpm --regi...

Mysql関数呼び出しの最適化の詳細な説明

目次関数呼び出しの最適化関数呼び出しの最適化MySQL 関数は、内部的に決定論的または非決定論的とし...

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

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

サーバー同時実行数の推定式と計算方法

最近、サーバーのストレステストを再度行う必要が出てきました。ここでは、最近学んだ見積もりスキームと見...

js における関数のネストとクロージャの詳細

目次1. 範囲2. 関数の戻り値3. 関数のネスト4. 終了5. クロージャの実用的応用1. 内部変...

Bootstrap 3.0 学習ノート CSS関連補足

この記事の主な内容は次のとおりです。 1. ブラウザのサポート2. 画像3. レスポンシブツール4....

MySQLの不合理なMaxIdleConnsにより接続が短くなる

1 背景最近、Shimo Document のオンライン ビジネスでパフォーマンスの問題が発生しまし...

win10 での mysql 8.0.16 winx64 インストールの最新グラフィック チュートリアル

このデータベースをダウンロードするには、多くの時間とトラフィックがかかります。踏み込んだ落とし穴で時...

Deepin で virtualenv をインストールして使用するチュートリアル

virtualenv は、分離された Python 仮想環境を作成するためのツールです。独立したディ...

MySQLの高可用性アーキテクチャの詳細な説明

目次導入MySQL 高可用性マスター 1 つとバックアップ 1 つ: MySQL マスター スレーブ...

MySQL 5.7.13 ソースコードのコンパイル、インストール、および構成方法のグラフィックチュートリアル

インストール環境: CentOS7 64ビットMINI版公式ソースコードのコンパイルおよびインストー...

MySQL 8.0.11 のインストールと設定方法のグラフィック チュートリアル (win10)

この記事ではMySQL 8.0.11のインストールと設定方法を参考までに記録します。具体的な内容は以...

Ubuntuがネットワークに接続できない場合の解決策

仮想マシン内の Ubuntu がネットワークに接続できない場合の効果的な解決策: 1. Ubuntu...

JavaScriptのアロー関数の特徴と通常の関数との違い

目次1. 矢印関数の使用1. 通常関数から矢印関数へ2. 中括弧を省略してリターンする3. 括弧を省...