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の理解のまとめ

推薦する

MySQLデータ復旧のさまざまな方法の概要

目次1. はじめに2. 直接回復2.1 mysqldumpバックアップの完全リカバリ2.2 xtra...

MySQL ロック(テーブルロック、行ロック、共有ロック、排他ロック、ギャップロック)の詳細な説明

現実世界では、鍵は外の世界から身を隠したいときに使用するツールです。コンピュータでは、複数のプロセス...

MySQL 8.0 の降順インデックス

序文インデックスが順序付けられていることは誰もが知っていると思いますが、MySQL の以前のバージョ...

2017 最新バージョンの Windows インストール MySQL チュートリアル

1. まず、MySQL の公式サイトから最新バージョンの MySQL をダウンロードします。リンクを...

CSS 評価効果の星の例

何?何のスターコートですか?さて、もっとわかりやすくするために写真を見てみましょう。 よく見ると、パ...

MySQLがクエリキャッシュをキャンセルした理由

MySQL には以前、クエリ キャッシュ (Query Cache) がありました。8.0 以降では...

MySqlを最適化するためにnot inを使用する方法

最近、プロジェクトで選択クエリを使用する際に、未使用の主キー ID を除外するために not in ...

シーケンス関数を実装する MySQL コード

MySQLはシーケンス関数を実装する1. シーケンスレコードテーブルを作成する テーブル `sys_...

回転するフリップカードアニメーションの効果を実現するCSS

回転フリップ効果の CSS アニメーション、具体的な内容は次のとおりです。 1. まず2つのボックス...

MySQL の不正な文字列値の解決方法

MySQL を使用して中国語の文字を挿入すると、多くの友人から次のエラーが報告されます。 これは、文...

MYSQLの主キー制約とユニーク制約の違いについて簡単に説明します。

目次主キー制約ユニーク制約主キー制約PRIMARY KRY 主キーは一意です。テーブルには主キーを ...

jQueryはフェードインとフェードアウト効果を実現します

jQuery を使用してフェードインとフェードアウト効果を完成させる前に、まずいくつかのコードを理解...

Ubuntu 18.04 向け VMware Tools のインストールと構成のチュートリアル

この記事では、Ubuntu 18.04でのVMware Toolsのインストールと設定について記録し...

Zabbixを使用してMySQLを監視する方法

Zabbix 導入ドキュメントzabbix導入後zabbixエージェントの操作1. MySQLを監視...

Dockerサーバーのストレージリソースプール不足問題の解決

目次1. 問題の説明2. 問題分析3. 問題解決1. Dockerのディスク使用量を確認する2. 再...