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

推薦する

Windows での Nginx のインストールと環境設定 (nginx をサービスとして実行)

最初で最も重要なステップは、Windows 環境に Ngnix サービスをインストールする方法です。...

JSで画面録画機能を作成する

OBS studioかっこいいですが、 JavaScriptもっとかっこいいです。では、 JavaS...

Django がローカル MySQL データベースに接続する手順 (pycharm)

ステップ1:setting.pyでデータベースを変更する # データベースを構成する DATABAS...

MySQL Null は 5 つの問題を引き起こす可能性があります (すべて致命的)

目次1. カウントデータが失われる解決2. 明確なデータ損失3.データ損失を選択解決4. Nullポ...

Vueはコンピュータカメラを呼び出して写真機能を実現します

この記事の例では、コンピュータカメラを呼び出して写真機能を実現するためのvueの具体的なコードを参考...

MySQL の垂直テーブルを水平テーブルに変換する方法と最適化のチュートリアル

1. 縦型テーブルと横型テーブル垂直テーブル: テーブル内のフィールドとフィールド値はキーと値の形式...

autoconfを使用してMakefileを生成し、プロジェクトをコンパイルする手順

序文Linux では、コンパイルとリンクには Makefile を使用する必要がありますが、適切な ...

Nginx 構成 SSL および WSS 手順の紹介

目次序文1. Nginxのインストール1. Nginxをダウンロードする2. 依存関係をインストール...

MySqlデータベースの基礎知識のまとめ

目次基本的なデータベース操作2) データベースを表示する3) データベースを選択する4) データベー...

MySQL MGR の利点は何ですか?

MGR (MySQL グループ レプリケーション) は、バージョン 5.7 で追加された新しい機能...

レスポンシブ Web デザインが価値のない 5 つの理由

この記事は Tom Ewer の Managewp ブログからのもので、現在人気のレスポンシブ デザ...

aタグに下線を付け、クリック前後で色を変える方法

コードをコピーコードは次のとおりです。リンクフォントサイズ: 12px;色: #000000;テキス...

IDEA2021 tomcat10 サーブレットの新しいバージョンの落とし穴

私が学習していたときに使用していたバージョンは比較的新しいものであり、インターネット上のチュートリア...

CSS3で跳ねるボールのアニメーションを実現

私は通常、大手ウェブサイトの特別ページや製品リリースページを訪問するのが好きです。なぜなら、たくさん...

Linux で実行可能ファイルを実行するときに「そのようなファイルまたはディレクトリはありません」というプロンプトが表示される場合の解決策

最近、Linux オペレーティング システムを使用して実行可能ファイルを実行していたところ、「そのよ...