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

推薦する

Centos8 でローカル Web サーバーを構築するための実装手順

1 概要システム Centos8 では、httpd を使用してローカル Web サーバーを構築します...

Docker デプロイメントサービスの落とし穴を登る過程の詳細

初めて書きます。自己紹介させてください...みなさんこんにちは。私はジャスミンです。なぜジャスミンと...

IE6では画像要素imgに余分な空白スペースがある

ページの DIV+CSS レイアウトを行う際、IE6 で画像要素 img の下に余分なスペースができ...

202 無料の高品質 XHTML テンプレート (2)

前回の記事「202 個の無料高品質 XHTML テンプレート (1)」に続き、123WORDPRES...

MySQL における between の境界と範囲の説明

境界範囲間のmysql間の範囲は両側の境界値を含む例: 3 から 7 までの id は、id >...

CSS スタイルが機能しない (史上最も完全な解決策の概要)

ページを作成するときに、記述した CSS スタイルが有効にならないことがあります。この現象にはさまざ...

上位Nを見つけるためのMySQLグループソートの詳細な説明

MySQLグループソートで上位Nを見つけるテーブル構造grp でグループ化し、num で並べ替えて、...

JavaScriptのスタックとコピーの詳細な説明

目次1. スタックの定義2. JSスタックの調査1. スタックとヒープ2. 基本型と参照型3. 値渡...

M1 チップに MySQL 8.0 データベースをインストールする方法 (画像とテキスト)

1. ダウンロードまず、MySQLの国内ミラーをお勧めします。特に速いわけではありませんが、それで...

Nexus を使用して jar パッケージをプライベート サーバーに追加する方法

なぜ Nexus プライベート サーバーを構築する必要があるのでしょうか。その理由は非常に簡単です。...

入力テキストボックスの入力実装プロパティを無効にする

今日は、開発でよく使われる、非常に便利な HTML タグをいくつかまとめてみたいと思います。これらの...

Docker で Harbor パブリック リポジトリを構築する方法の例

前回のブログ投稿では、レジストリのプライベート ウェアハウスについて説明しました。今日は、Harbo...

MySQL は、現在のデータ テーブル内のすべての時間に対して指定された時間間隔を増加または減少させます (推奨)

DATE_ADD() 関数は、指定された時間間隔を日付に追加します。現在のテーブル内のすべてのデー...

HTML タグでの this の使用法の紹介

例えば:コードをコピーコードは次のとおりです。 <html> <ヘッド> &...

Vueは、サイドナビゲーションバーをタブページに関連付けるサンプルコードを実装します。

目次テクノロジースタック効果分析するテクノロジースタックサイドバー用Antdtabは要素を使用します...