リクエスト 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 クエリのパケットが大きすぎる問題と解決策

推薦する

CentOS7 で MySQL データベースにリモート接続できない理由と解決策

序文最近、仕事で問題が発生しました。 Centos7 システムでは MySQL にリモート接続できな...

Mysql のフィールドのデータの一部をバッチ置換する (推奨)

MYSQL のフィールドのデータの一部をバッチで置き換えます。具体的な導入は次のとおりです。 1....

Node.js のワーカー スレッドの詳細な理解

目次概要Node.js における CPU バウンド アプリケーションの歴史CPUを集中的に使用する操...

LeetCode の SQL 実装 (175. 2 つのテーブルの結合)

[LeetCode] 175.2つのテーブルを結合する表: 人物+-------------+--...

uniapp エントリーレベル nvue クライミングピット記録の分析

目次序文こんにちは世界画像 境界線の半径を設定する実ピクセルを設定する外部CSSをインポートttfフ...

Vue+elementUI コンポーネントは、折りたたみ可能な動的レンダリングのマルチレベル サイドバー ナビゲーションを再帰的に実装します。

かなり前に実装された機能ですが、クリックすると選択したメニュー項目の背景色が白くなることに気付きまし...

Docker でローカルにイメージをインポート/保存/読み込み/削除する方法

1. Dockerはローカルイメージをインポートする場合によっては、イメージをローカルまたは別の友人...

Linuxのwatchコマンドの使用

1. コマンドの紹介watch コマンドは、指定されたコマンドを定期的に実行し、実行結果を全画面に表...

MySQL におけるデフォルトの使用法の詳細な説明

NULL および NOT NULL 修飾子、DEFAULT 修飾子、AUTO_INCREMENT 修...

ウェブデザイナーが持つべき資質と能力

Web デザインは、インターネットの出現後に誕生した新興の周辺産業です。 Web ページは店頭のよう...

CSS3+JS による虫眼鏡モードの完璧な実装の詳細説明

約 1 年前、私は「虫眼鏡効果を模倣するいくつかの方法の原理の分析」という記事を書きました。当時、自...

フローティング要素が親要素の高さを崩す原因と解決策の詳細な説明

フローティング要素は、親要素の高さを縮小します。要素を float float:left/right...

nginx で正規表現を使用してワイルドカードドメイン名を自動的に一致させる方法

Nginxは正規表現を使用して、ワイルドカードドメイン名をディレクトリに自動的に一致させます。 Ng...

CSS の高度な使い方(実戦で活用)

1. ul タグには、Mozilla ではデフォルトでパディング値がありますが、IE ではマージン値...

Vue で 3D タグ クラウドを実装するための詳細なコード

プレビュー: コード:ページセクション: <テンプレート> <div class=...