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

推薦する

Idea で Docker を使用して SpringBoot プロジェクトをデプロイする詳細な手順

序文プロジェクト要件: Dockeridea に Docker プラグインをインストールし、Dock...

Linux システムで tcpdump を使用してパケットをキャプチャする方法

まずサンプルコードを見てみましょう: 1. 共通パラメータ tcpdump -i eth0 -nn ...

MySQLストアドプロシージャを変更する詳細な手順

序文実際の開発では、ビジネス要件が変更されることが多いため、ストアド プロシージャの特性を変更するこ...

nginx のロケーションで URI の傍受を実装する方法

例:場所のルートとエイリアスルートディレクティブは、ルートによって設定されたディレクトリに検索ルート...

均一なアニメーション効果を実現するJavaScript

この記事の例では、JavaScriptで等速アニメーションを実装するための具体的なコードを参考までに...

Alibaba Cloud MySQL スペースをクリーンアップする方法

今日、Alibaba Cloudからディスク警告通知を受け取りました。確認したところ、100Gのスペ...

nginx プロキシ ポート 80 からポート 443 への実装

nginx.conf設定ファイルは次のとおりです。 ユーザー nginx; ワーカープロセス 1; ...

Oracle と MySQL の高可用性ソリューションの比較分析

Oracle と MySQL の高可用性ソリューションについては、以前からまとめたいと思っていたので...

MySQLデータベースのマスタースレーブレプリケーションと読み取り書き込み分離に関する詳細なチュートリアル

目次序文1. MySQL マスタースレーブレプリケーション1. サポートされているレプリケーションの...

MySql クライアントが数秒で終了する問題を解決する (my.ini が見つからない)

問題の説明 (環境: windows7、MySql8.0)今日、MySql をインストールした後、M...

HTMLポップアップ透明レイヤーインスタンスのサイズを設定でき、比例することができます

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

jQueryはシャトルボックス機能を実現する

この記事では、シャトルボックス機能を実現するためのjQueryの具体的なコードを参考までに紹介します...

MySQL の NOT IN 充填ピットの NULL 列の問題の解決方法

以前、会社で小さな機能に取り組んでいたとき、特定の状況でデータがいくつあるかを数えてから問題を修正し...

MySQLコンテナ間のレプリケーション構成例の詳細な説明

背景先週、会社で MySQL レプリケーションのトレーニングを受けたので、今週末は学んだことを実践す...

MySQL の current_timestamp の落とし穴とその解決策を共有する

目次MySQL の current_timestamp の落とし穴エラーを報告する私の解決策mysq...