リクエスト IP の最後のセグメントに基づいてトラフィックを分割するように Nginx を構成する方法

リクエスト IP の最後のセグメントに基づいてトラフィックを分割するように Nginx を構成する方法

これは主に、場所パラメータのif判断の設定ジャンプです。迂回により、サーバーの負荷と圧力を軽減できます。これは非常に一般的なサーバー展開アーキテクチャです。
IPの最後のセグメントの範囲に応じてジャンプする

#ドメイン名、IP、ポートなどの情報はご自身で変更してくださいupstream huaji-01.com {
 サーバー 192.168.1.100:8080;
}

アップストリーム huaji-02.com {
 サーバー 192.168.1.200:8080;
}

サーバー{

 聞く 80;
 サーバー名 www.huaji.com;

 位置 /
 {
  $remote_addr ~* ^(.*)\.(.*)\.(.*)\.[1,125]$) の場合 {
    プロキシパス http://huaji-01.com;
    壊す;
  }

  proxy_pass http://huaji-02.com;
 }

}

上記の例では、IPアドレスが1~125で終わるリクエストをhuaji-01.comに転送し、それ以外はhuaji-02.comに転送します。正規表現を変更することもできます。たとえば、

ルール: $remote_addr ~* ^(.*)\.(.*)\.(.*)\.*[0268]$ 0268 で終わる偶数 IP は huaji-01.com にジャンプし、その他は 2 番目のドメイン名にジャンプします。

ルール: $remote_addr ~* ^(112)\.(.*)\.(.*)\.(.*)$ 112 で始まる IP は指定されたドメイン名にリダイレクトされます。

ルール: $http_x_forwarded_for ~* ^(112)\.(.*)\.(.*)\.(.*)$ 転送アドレスセグメントに基づいてトラフィックを転送し、112 で始まるトラフィックを指定されたドメイン名にリダイレクトします。

if命令条件判断の意味:

正規表現のマッチング:

大文字と小文字を区別するマッチングの場合 ~

~*は大文字と小文字を区別しないマッチングです

!~ と !~* は、それぞれ大文字と小文字を区別する一致と大文字と小文字を区別しない一致です。

ファイルとディレクトリの一致。ここで:

-f と !-f はファイルが存在するかどうかを判断するために使用されます

-dと!-dはディレクトリが存在するかどうかを判断するために使用されます

-e と !-e はファイルまたはディレクトリが存在するかどうかを判断するために使用されます

-xと!-xはファイルが実行可能かどうかを判断するために使用されます

書き換えディレクティブの最後のパラメータはフラグ タグであり、次のものが含まれます。

last は Apache の [L] フラグに相当し、書き換えを意味します。

break このルールが一致すると、一致は終了し、次のルールは一致しなくなります。

リダイレクトは 302 一時リダイレクトを返し、ブラウザ アドレスにはジャンプ後の URL アドレスが表示されます。

permanent は 301 永続リダイレクトを返し、ブラウザ アドレスにはジャンプ後の URL アドレスが表示されます。

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

以下もご興味があるかもしれません:
  • Nginx リバース プロキシを介して IP アクセス転送を実装するためのサンプル コード

<<:  Vueは遅延読み込みによりページの応答速度を向上

>>:  MySQL クエリのパケットが大きすぎる問題と解決策

推薦する

MySQL フラッシュリストとダーティページフラッシュメカニズム

1. レビューMySQL の起動後にバッファ プールが初期化されます。バッファ プールは N 個の空...

測定画像HTTPリクエスト

一般的なブラウザでテスト ページを開き、Fiddler で http リクエストを表示してください。...

MySQL 5.7.18 winx64 のインストールと設定方法のグラフィックチュートリアル

圧縮パッケージのインストールは、mysql-5.7 以降、大幅に変更されました。この記事では、mys...

html+css3で実装されたログインインターフェース

成果を達成するまずHTMLを使って基本的なフレームワークを構築します <本文> <...

VMware Workstation のインストール Linux (Ubuntu) システム

システムをコンピューターにインストールする方法がわからない場合は、Linux を学習したい場合は、仮...

シームレスなカルーセルを実現するjQueryプラグイン

シームレス カルーセルは非常に一般的なエフェクトであり、ロジックを理解すれば非常に簡単です。効果は以...

Vue の新しいおもちゃ VueUse の具体的な使い方

目次序文VueUseとは使いやすいおなじみの手ぶれ補正やスロットル機能もありますグローバル状態を共有...

マップタグパラメータの詳細な紹介と使用例

マップ タグはペアで表示する必要があります。 <map> ....</map>...

mysqladmin を使用して MySQL インスタンスの現在の TPS と QPS を取得する方法

mysqladmin は管理と操作を行う公式の mysql クライアント プログラムです。MySQL...

require loaderの実装原理の深い理解

序文Node は新しいプログラミング言語ではなく、JavaScript のランタイムに過ぎないとよく...

MySQLトランザクションの基本的な学習と経験の共有

トランザクションは、論理的な操作のグループです。この操作グループを構成する各ユニットは、成功するか失...

ウェブページの広告デザインにおけるウェブデザインの寸法とルール

1. 800*600 未満の場合、Web ページの幅が 778 以内であれば、水平スクロール バーは...

MySQLクエリ条件の一般的な使用法の詳細な説明

この記事では、例を使用して、MySQL クエリ条件の一般的な使用方法を説明します。ご参考までに、詳細...

dockerコマンドの使用にはsudoは必要ありません

docker デーモンは通常の TCP ポートではなくホストの Unix ソケットにバインドする必要...