Nginx ロードバランシング/SSL 構成の実装

Nginx ロードバランシング/SSL 構成の実装

負荷分散とは何ですか?

ドメイン名が複数の Web サーバーを指している場合は、nginx ロード バランシング サーバーを追加します。nginx ロード バランシングにより、クライアントからのリクエストを各 Web サーバーにバランスよく送信できるため、1 台のサーバーが過負荷になり、他のサーバーが比較的アイドル状態になるという不均衡を回避できます。

nginx の負荷分散を設定します。

nginx マシンに新しい設定ファイルを作成します。

[root@centos02 ~]# vi /etc/nginx/conf.d/test.conf

次のコンテンツを追加します。

上流テスト
 {
  ip_ハッシュ; 
  サーバー 192.168.0.10:80 重み=100; 
  サーバー 192.168.0.20:80 重み=50;
 }
 サーバ
 {
  聞く 80;
  サーバー名 www.test.com;
  位置 /
  {
   proxy_pass http://test;
   proxy_set_header ホスト $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
 }
  • アップストリーム: 負荷分散構成
  • test: カスタム名。server{} の proxy_pass 参照に使用されます。
  • ip_hash: 同じクライアントからのすべてのリクエストを同じサーバーに送信します (そうでない場合、クライアントは Web サイトにログインしてから別のサブページをクリックし、再度ログインするように求められる場合があります)
  • サーバー: Webサーバーのアドレス
  • weight: 重みを定義します (範囲 0 ~ 100)。負荷分散サーバーは、重みが大きい Web サーバーにリクエストを送信することを優先します (上記の例では、150 件のリクエストが届いた場合、192.168.0.10 に 100 が割り当てられ、192.168.0.20 に 50 が割り当てられます)。
  • server_name: アクセスしているウェブサイトのドメイン名
  • proxy_pass: アップストリームで定義された名前を参照します

nginx の設定を確認し、リロードします。

[root@centos02 ~]# nginx -t
nginx: 設定ファイル /etc/nginx/nginx.conf の構文は正常です
nginx: 設定ファイル /etc/nginx/nginx.conf のテストが成功しました
[root@centos02 ~]# nginx -s リロード

次に、クライアントのホスト ファイルを変更して、テスト ドメイン名 www.test.com をテスト対象の nginx ロード バランシング マシンの IP にポイントし、www.test.com Web サイトにアクセスします。

負荷分散構成例補足

1. 要求されたファイル構成に応じて:

上流 aa {   
    サーバー 192.168.0.10;
    サーバー 192.168.0.20; 
  }
アップストリーム bb { 
    サーバー 192.168.0.100;
    サーバー 192.168.0.101;
 }
 サーバー{
  聞く 80;
  サーバー名 www.test.com;
  場所 ~ aa.php
  {
   プロキシパス http://aa/;
   proxy_set_header ホスト $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
  場所 ~ bb.php
  {
    proxy_pass http://bb/;
    proxy_set_header ホスト $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
  位置 /
  {
    proxy_pass http://bb/;
    proxy_set_header ホスト $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

aa.php へのリクエストはグループ aa に送信され、bb.php へのリクエストはグループ bb に送信され、その他のすべてのリクエストはグループ bb に送信され、location / {} を指定する必要があります。指定しないと、URL が正しく一致しません。

2. 要求されたディレクトリに応じて設定します。

上流 aa {   
    サーバー 192.168.0.10;
    サーバー 192.168.0.20; 
  }
アップストリーム bb { 
    サーバー 192.168.0.100;
    サーバー 192.168.0.101;
 }
 サーバー{
  聞く 80;
  サーバー名 www.test.com;
  場所 /dir1/
  {
   proxy_pass http://aa/dir1/;
   proxy_set_header ホスト $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
  場所 /dir2/
  {
    proxy_pass http://bb/dir2/;
    proxy_set_header ホスト $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
  位置 /
  {
    proxy_pass http://bb/;
    proxy_set_header ホスト $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

#リクエストURIが/dir1/に一致する場合はaa/dir1/にプロキシし、/dir2/などに一致する場合はbb/dir2/にプロキシします

Nginx は、https プロトコル経由で Web サイトにアクセスするために SSL 証明書を構成します。

SSL証明書申請サイト:

1. https://www.wosign.com/
2. https://freessl.cn/ (無料)

#ブラウザで生成した後、サーバー上に証明書ファイルを作成する必要があります

証明書ファイルを作成します。

[root@linux ~]# mkdir /etc/nginx/ssl
[root@linux ~]# cd !$
/etc/nginx/ssl をコピーします
[root@linux ssl]# タッチCA
[root@linux ssl]# test.crt をタッチします
[root@linux ssl]# test.key をタッチします

#証明書申請ウェブサイトから提供された対応する証明書の内容をca/.crt/.keyファイルに追加します

nginx 設定ファイルを編集します。

[root@linux ~]# vi /etc/nginx/conf.d/bbs.conf

次のコンテンツを追加します。

443 ssl を聴く;
サーバー名 test.bbs.com;
sslオン;
ssl_certificate /etc/nginx/ssl/test.crt; #define .crt ファイル パス ssl_certificate_key /etc/nginx/ssl/test.key; #define .key ファイル パス ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

設定を確認し、nginx をリロードします。

[root@linux ~]# nginx -t
nginx: 設定ファイル /etc/nginx/nginx.conf の構文は正常です
nginx: 設定ファイル /etc/nginx/nginx.conf のテストが成功しました
[root@linux ~]# nginx -s リロード

#次に、ウェブサイトのアドレスバーにアクセスしてHTTPSを表示します

カール検証方法:

curl -k -H "ホスト:test.bbs.com" https://192.168.234.128/index.php

#host:ドメイン名、https://ウェブサーバーのIP、出力結果はウェブサイトのページタグ情報であり、成功を意味します

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

以下もご興味があるかもしれません:
  • Nginx ドメイン名 SSL 証明書の構成 (Web サイトの http を https にアップグレード)
  • nginx ssl を設定して https アクセスを実装する手順 (初心者向け)
  • HTTPS ウェブサイトを展開するために SSL 証明書を使用して Nginx を構成する方法 (証明書の発行)
  • Nginx での SSL 証明書のインストールと展開手順の概要

<<:  MySQLデータベースのストアドプロシージャとトランザクションの違い

>>:  Vueにおける仮想DOMの理解のまとめ

推薦する

Tomcat コアコンポーネントとアプリケーションアーキテクチャの詳細な説明

目次Web コンテナとは何ですか? HTTP の性質HTTP リクエスト応答の例クッキーとセッション...

iOS スタイルの選択ボックスの開閉機能を実装するための純粋な CSS

1 効果デモアドレス: https://www.albertyy.com/2020/7/check...

Vue ページレンダリングにおけるキーの適用例チュートリアル

導入フロントエンドプロジェクトの開発プロセスでは、el-table によって表示される結果列がコンポ...

Linuxはlsofコマンドを使用してファイルのオープンステータスを確認します

序文Linux では「すべてがファイル」であることは誰もが知っているので、ファイルのオープン状態を確...

mysql エラー 1045 (28000) - ユーザーへのアクセスが拒否される問題を解決する方法

問題の説明 (以下の説明は Windows 環境に限定されます): D:\develop\ide\m...

Vue カードスタイルのクリックして切り替える画像コンポーネントの使用方法の詳細な説明

この記事では、vueカードスタイルのクリックして切り替える画像コンポーネントを参考までに紹介します。...

JavaScript のショートカットのヒント

目次1. 配列を結合する2. 配列をマージする(最初に) 3. 配列の複製4. 構造化分解割り当て5...

js を使用して 2 つの HTML ウィンドウ間で通信する方法

シナリオ: ページAがページBを開くと、ページBで操作した後、ページAは変更されたデータを同期する必...

Linux での一般的なシェル スクリプト コマンドと関連知識

目次1. 覚えておくべき知識1. 変数タイプ2. シェル変数の説明3. シングルクォート、ダブルクォ...

MySQLがファントムリードを解決する方法の詳細な説明

1. ファントムリーディングとは何ですか?トランザクションにおいて、複数のクエリの後に結果セットの数...

Apache FlinkCEP でタイムアウトステータス監視を実装するための詳細な手順

CEP - 複合イベント処理。ご注文後、一定期間内にお支払いの確認が取れませんでした。タクシーの配...

Vue の element-ui コンポーネントのデフォルトの CSS スタイルを変更する 4 つの方法

目次序文1. グローバル統合オーバーライドを使用する2. .vueファイルを変更する3. コンポーネ...

CentOS7.6にMYSQL8.0をインストールする詳細な手順

1. 一般的に、CentOS では mariadb がデフォルトでインストールされているため、まず ...

Docker で Selenium グリッド分散環境を構築する実用的な方法

最近、Zoom ビデオ会議をテストし、100 人が同時に会議に参加することをシミュレートする必要があ...

JavaScript で最も高速なループはどれですか?

どの for ループまたは反復子がニーズに適しているかを知ることで、アプリケーションのパフォーマンス...