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

推薦する

モバイル Web アプリ上の画像が鮮明ではなく、非常にぼやけているのはなぜですか?

なぜ?最も簡単に言えば、ピクセルは均等ではないということです。携帯電話に表示される写真はとても繊細に...

Dockerコンテナを更新、パッケージ化、Alibaba Cloudにアップロードする方法

今回は、実行中のコンテナをイメージにパッケージ化して Alibaba Cloud にアップロードし、...

Bash スクリプトでの配列メソッドの作成と使用の概要

Bashで配列を定義するbash スクリプトで新しい配列を作成する方法は 2 つあります。 1 つ目...

MySQL で GTID モードをオンラインで有効または無効にする

目次基本的な概要GTIDをオンラインで有効にする1. GTID検証ENFORCE_GTID_CONS...

Vueはシンプルなスライダー検証を実装する

この記事の例では、Vueスライダー検証の実装を共有しています。コードは次のとおりです。 <テン...

大規模な Vue.js プロジェクトの構築と維持のための 10 のベスト プラクティス

目次1. スロットを使用してコンポーネントを理解しやすくし、より強力にする2. Vuexストアを正し...

リンク内の href=# はどういう意味ですか?

現在のページへのリンク。 -------------------一般的な使用法は次のとおりです。 &...

複数の値を返す MySQL ストアド プロシージャ メソッドの例

この記事では、例を使用して、MySQL ストアド プロシージャで複数の値を返す方法について説明します...

MySQLオンラインログライブラリの移行例

最近の事例をお話ししましょう。オンライン Alibaba Cloud RDS 上のゲーム ログ ライ...

MySQLのスイッチングデータ保存ディレクトリの実装方法

MySQLのスイッチングデータ保存ディレクトリの実装方法今日、仕事中に、mysql が保存されている...

MySQLのパスワードを忘れた場合の対処方法

MySQL パスワードを忘れた場合の解決策: [root@localhost ~]# mysql -...

Nginxはリバースプロキシを使用して負荷分散プロセス分析を実装します

導入dockerコンテナとdocker-composeに基づいて、Linux環境でのdockerの基...

Linux での stat 関数と stat コマンドの使用法の詳細な説明

stat 関数と stat コマンドLinux ファイル内の [inode = インデックス ノード...

Node.js+express+socket でオンラインのリアルタイム多人数チャットルームを実現

この記事では、オンラインリアルタイム多人数チャットルームを実現するためのNode.js+expres...