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はアンカー配置機能を実装します

推薦する

Bootstrap 3.0 学習ノート グリッドシステム事例

序文前回の記事では、主にグリッドシステムの基本原理を学び、簡単なケースを通してその原理を実践しました...

nginx リバース プロキシの魔法のスラッシュについての簡単な説明

nginx リバース プロキシを設定する場合、location と proxy_pass のスラッシ...

Tomcat は、Springboot プロジェクトの WAR パッケージの起動時にエラーを報告します: 子の起動時にエラーが発生しました

今日、会社の Springboot プロジェクトは、テストのためにテスト サーバーにデプロイする準備...

jQueryはすべての選択と逆選択操作ケースを実装します

この記事では、全選択と逆選択操作を実装するためのjQueryの具体的なコードを参考までに共有します。...

javascript:void(0) の意味と使用例

voidキーワードの紹介まず、void キーワードは JavaScript で非常に重要なキーワード...

IE6 スペースバグ修正方法

コードを見てみましょう:コードをコピーコードは次のとおりです。 < !DOCTYPE html...

VUE と Canvas を使用して Thunder Fighter タイピング ゲームを実装する方法

今日は、サンダーファイタータイピングゲームを実装します。ゲームプレイは非常に簡単です。それぞれの「敵...

MySQL 8.0.11 の新機能の紹介

MySQL 8.0 for Windows v8.0.11 公式無料バージョン 64 ビット1. デ...

MYSQLパターンマッチングREGEXPの使用に関する一般的な話など

のようにLIKE ではデータ全体が一致する必要がありますが、REGEXP では部分的な一致のみが必要...

Nginx シグナル制御

Nginx の紹介Nginx は、高性能な HTTP およびリバース プロキシ サーバーであり、IM...

MySQLデータベースの基本構文と操作

MySQLデータベースの基本構文DDL操作データベース作成構文: create database デ...

Nginx サービス クイック スタート チュートリアル

目次1. Nginx の紹介1. Nginx とは何ですか? 2. Nginx を使用する理由3. ...

Linux での Hbase のインストールと設定のチュートリアル

目次Linux での Hbase のインストールと設定1. Hbaseインストールパッケージをダウン...

MySQL ユーザー変数と set ステートメントの例の詳細な説明

目次1 ユーザー変数の概要2 ユーザー変数の定義3 ユーザー変数の使用3.1 セットを通した例3.2...

初心者向けに Docker に Jenkins をインストールする方法を詳しく説明したチュートリアル

Jenkins はオープンソース ソフトウェア プロジェクトです。Java をベースに開発された継続...