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

推薦する

JSパッケージオブジェクトに関する簡単な説明

目次概要意味インスタンスメソッドプリミティブ型とインスタンスオブジェクト間の自動変換カスタムメソッド...

Linux での Python スクリプトの自動起動とスケジュール起動の詳細な手順

1. Pythonは起動時に自動的に実行されますPython の自己起動スクリプトがauto.pyで...

Docker を使用した war パッケージ プロジェクトのデプロイの実装

Docker で war をデプロイするには、コンテナを使用する必要があります。ここでは tomca...

Docker で MySQL サービスをデプロイする方法と、遭遇する落とし穴

最近、ポーターを学んでいます。こんなに強力なものがあったなんて、今まで知らなかった気がします。クラス...

リフレッシュリダイレクトを実現する HTML ヘッドタグメタ

コードをコピーコードは次のとおりです。 <html> <ヘッド> <m...

Ubuntu 18.04 Server に静的 IP を設定する方法

1. 背景Netplan は、Ubuntu システムのネットワーク設定を簡単に管理および構成できるよ...

Ubuntu20のtzselect設定時間失敗問題、Raspberry Piサーバ(推奨)

2 日前、Raspberry Pi サーバーを Ubuntu 20 にアップグレードしました。今日...

etcd クラスターをデプロイするための docker-compose の実装手順

目次docker-compose.ymlを書くdocker-composeを実行するビルドステータス...

Mysqlのマージ結果と水平スプライシングフィールドの実装手順

序文最近、レポート機能に取り組んでいたのですが、ある月に各部署に入社した人と退職した人の数をカウント...

Angularコンポーネントの仲介モードの詳細な説明

目次1. 仲介業者モデル2. 例1. 見積コンポーネントに購入ボタンを追加する2. 親コンポーネント...

CSS3で作られたレインボーボタンスタイル

結果: 実装コード: html <div class="buttons"&...

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

この記事は、参考のためにMySQL 8.0.17のインストールと設定のグラフィックチュートリアルを記...

MySQL 8.x msi バージョンのインストール チュートリアル (画像とテキスト付き)

1. MySQLをダウンロードする公式サイトのダウンロードアドレス https://dev.mys...

Reactの状態の理解についての簡単な分析

複雑なコンポーネント (クラス コンポーネント) と単純なコンポーネント (関数コンポーネント) を...

JavaScript イベント ループのケース スタディ

js のイベント ループJavaScript はシングルスレッドなので、同じイベントで実行できるメソ...