Nginx で Http、Https、WS、WSS を設定する方法

Nginx で Http、Https、WS、WSS を設定する方法

前面に書かれた

今日のインターネット分野では、Nginx は最も広く使用されているプロキシ サーバーの 1 つです。多くの大企業が、ビジネス システムのプロキシ サーバーとして Nginx を使用しています。したがって、Nginx の Http、Https、WS、WSS の設定を理解する必要があります。さあ、Bingheと一緒にNginxを学び、一緒に進歩し、一緒にハゲになりましょう〜〜

Nginx 構成 HTTP

まず、Nginx で HTTP を設定する方法について説明します。Nginx で HTTP を設定することは、Nginx で最もよく使用される機能の 1 つです。以下に示すように、nginx.conf で対応する情報を設定します。

アップストリームメッセージ{
  サーバー localhost:8080 max_fails=3;
}

サーバー{
 聞く 80;
 server_name ローカルホスト;

 位置 / {
  ルートhtml;
  インデックス index.html index.htm;
  #クロスドメインアクセスを許可する add_header 'Access-Control-Allow-Origin' '*';
  #proxy_redirect デフォルト;
  #プロキシ サーバーへの接続のタイムアウト。このタイムアウトは 75 秒を超えることはできません。サーバーに障害が発生した場合、10 秒後に別のサーバーに転送されます。
  プロキシ接続タイムアウト 10;
 }
 
  場所 / メッセージ {
    proxy_pass http://メッセージ;
    proxy_set_header ホスト $host:$server_port;
 }
}

この時点で、http://localhost/message にアクセスすると、http://localhost:8080/message に転送されます。

Nginx 構成 Https

企業がウェブサイトに対して高いセキュリティ要件を持っている場合、Nginx で Https を設定できます。具体的な設定情報は、次のとおりです。

アップストリームメッセージ{
  サーバー localhost:8080 max_fails=3;
}

サーバー{
 443 ssl を聴く;
 server_name ローカルホスト;
 ssl_certificate /usr/local/nginx-1.17.8/conf/keys/binghe.pem;
 ssl_certificate_key /usr/local/nginx-1.17.8/conf/keys/binghe.key;
 ssl_session_timeout 20分;
 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
 ssl_プロトコル TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers をオン;
 ssl_verify_client をオフ;
 位置 / {
  ルートhtml;
  インデックス index.html index.htm;
  #クロスドメインアクセスを許可する add_header 'Access-Control-Allow-Origin' '*';
  #プロキシ サーバーへの接続のタイムアウト。このタイムアウトは 75 秒を超えることはできません。サーバーに障害が発生した場合、10 秒後に別のサーバーに転送されます。
  プロキシ接続タイムアウト 10;
 }
 
  場所 / メッセージ {
    proxy_pass http://メッセージ;
    proxy_set_header ホスト $host:$server_port;
 }
}

このとき、https://localhost/message にアクセスすると、http://localhost:8080/message に転送されます。

Nginx 構成 WS

WS の完全な名前は WebSocket です。Nginx で WebSocket を構成することも比較的簡単です。nginx.conf ファイルで対応する構成を行うだけです。この方法はシンプルですが効果的であり、WebSocket サーバーのサービス機能を水平方向に拡張できます。

友人たちの理解を深めるために、ここでは Nginx 構成 WS に焦点を当てます。

まず、以下のように設定ファイルを直接表示します(使用する場合は、コピーして IP とポートを変更するだけです)。

マップ $http_upgrade $connection_upgrade { 
 デフォルトのアップグレード。 
 '' 近い; 
} 
アップストリーム wsbackend{ 
 サーバー ip1:port1; 
 サーバー ip2:port2; 
 キープアライブ1000;
} 
 
サーバー{ 
 聞く 20038; 
 位置 /{ 
  プロキシ_http_バージョン 1.1; 
  proxy_pass http://wsbackend; 
  proxy_redirect オフ; 
  proxy_set_header ホスト $host; 
  proxy_set_header X-Real-IP $remote_addr; 
  proxy_read_timeout 3600秒; 
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
  proxy_set_header アップグレード $http_upgrade; 
  proxy_set_header 接続 $connection_upgrade; 
 } 
}

次に、上記の構成の具体的な意味をそれぞれ分析します。

初め:

マップ $http_upgrade $connection_upgrade { 
 デフォルトのアップグレード。 
 '' 近い; 
} 

それは次のことを意味します:

  • $http_upgrade が '' (空) でない場合、$connection_upgrade はアップグレードになります。
  • $http_upgrade が '' (空) の場合、$connection_upgrade は閉じます。

第二に:

アップストリーム wsbackend{ 
 サーバー ip1:port1; 
 サーバー ip2:port2; 
 キープアライブ1000; 
} 

これは nginx の負荷分散を表します:

2 つのサーバー (ip1:port1) と (ip2:port2)。

keepalive 1000 は、各 nginx プロセスでアップストリーム サーバーによって維持されるアイドル接続を示します。アイドル接続が多すぎると、最も使用されていないアイドル接続が閉じられます。もちろん、これは接続の総数を制限するものではありません。アイドル接続プールのサイズとして考えることができます。設定値は、アップストリーム サーバーが耐えられる値である必要があります。

やっと:

サーバー{ 
 聞く 20038; 
 位置 /{ 
  プロキシ_http_バージョン 1.1; 
  proxy_pass http://wsbackend; 
  proxy_redirect オフ;
  proxy_set_header ホスト $host; 
  proxy_set_header X-Real-IP $remote_addr; 
  proxy_read_timeout 3600秒; 
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
  proxy_set_header アップグレード $http_upgrade; 
  proxy_set_header 接続 $connection_upgrade; 
 } 
} 

リスニングサーバーの構成を表します

  • listen 20038はnginxがリッスンするポートを示します
  • 場所 / はリスニングパスを示します (/ はすべてのパス、ユニバーサルマッチング、デフォルトと同等を示します)
  • proxt_http_version 1.1 はリバースプロキシによって送信される HTTP プロトコルバージョンが 1.1 であることを意味します。HTTP1.1 は長時間接続をサポートします。
  • proxy_pass http://wsbackend; は、負荷分散変数を使用できるリバースプロキシのURIを表します。
  • proxy_redirect off; はパスを置き換えないことを意味します。実際、/ の場合、デフォルトでは proxy_pass の後のパスを置き換えるため、/ であるかどうかは関係ありません。
  • proxy_set_header Host $host;は、リクエストヘッダーが送信中に変更されないことを意味します。$hostはnginxの組み込み変数で、現在のリクエストヘッダーを示します。proxy_set_headerは、リクエストヘッダーを設定することを意味します。
  • proxy_set_header X-Real-IP $remote_addr; 転送時の送信元IPまたは現在のクライアントIPを示します
  • proxy_read_timeout 3600s; テーブルへの 2 つのリクエストの間隔が 3600 秒を超えた場合にのみ、接続が閉じられます。デフォルトは 60 秒で、これが自動クローズの原因となります。
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; は、X-Forwarded-Forヘッダーが変更されないことを意味します。
  • proxy_set_header Upgrade $http_upgrade; はアップグレードの設定が変更されないことを意味します
  • proxy_set_header 接続 $connection_upgrade; は、$http_upgrade がアップグレードの場合、リクエストはアップグレード (websocket) であり、そうでない場合は接続を閉じることを意味します。

この時点で、ws://localhost:20038 へのアクセスは ip1:port1 と ip2:port2 に転送されます。

Nginx 構成 WSS

WSS は WebSocket + Https の略で、簡単に言えばセキュア WebSocket です。次に、WSS を構成する方法を見てみましょう。 WS を設定する際に、設定内容が詳細に説明されています。ここでは詳細には触れません。

マップ $http_upgrade $connection_upgrade { 
 デフォルトのアップグレード。 
 '' 近い; 
} 
アップストリーム wsbackend{ 
 サーバー ip1:port1; 
 サーバー ip2:port2; 
 キープアライブ1000; 
} 
サーバ{
 20038 ssl を聴く;
 server_name ローカルホスト;
 ssl_certificate /usr/local/nginx-1.17.8/conf/keys/binghe.com.pem;
 ssl_certificate_key /usr/local/nginx-1.17.8/conf/keys/binghe.com.key;
 ssl_session_timeout 20分;
 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
 ssl_プロトコル TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers をオン;
 ssl_verify_client をオフ;
 位置 /{
   プロキシ_http_バージョン 1.1;
   proxy_pass http://wsbackend;
   proxy_redirect オフ; 
   proxy_set_header ホスト $host; 
   proxy_set_header X-Real-IP $remote_addr; 
   proxy_read_timeout 3600秒; 
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
   proxy_set_header アップグレード $http_upgrade; 
   proxy_set_header 接続 $connection_upgrade; 
 }
}

この時点で、wss://localhost:20038 へのアクセスは ip1:port1 と ip2:port2 に転送されます。

Nginx で Http、Https、WS、WSS を設定する方法についてはこれで終わりです。Nginx で Http、Https、WS、WSS を設定する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • SSL モジュール構成を使用して HTTPS アクセスをサポートする nginx の詳細な説明
  • Nginx で複数の HTTPS ドメイン名を設定する方法
  • Nginx サーバーでサイト全体に HTTPS セキュア接続を構成する方法の詳細な説明
  • WeChat ミニプログラム サーバー環境の構成の詳細 (SSL、Nginx HTTPS、TLS 1.2 アップグレード)
  • HTTPS アクセスを実現するための Nginx 構成 SSL 証明書の詳細な説明
  • nginx で SSL 証明書を設定して https サービスを実装する方法
  • SSL証明書を使用してnginxを構成し、httpsアクセスを実装する例
  • Nginx+Tomcat+Https サーバー負荷分散構成の実践の詳細な説明

<<:  JavaScript での && および || 演算子の使用例

>>:  MySQLクエリ文を書き換える3つの戦略

推薦する

Nginx http ヘルスチェック構成プロセス分析

パッシブチェックパッシブ ヘルス チェックでは、NGINX と NGINX Plus はイベントの発...

LNMP を展開して HTTPS サービスを有効にする方法に関するチュートリアル

LNMP とは: Linux+Nginx+Mysql+(php-fpm、php-mysql)つまり、...

HTMLタグオーバーフロー処理アプリケーション

CSSを使用してスクロールバーを変更する1.コンテンツがオーバーフローした場合のオーバーフロー設定水...

MySQL で日付時刻データを取得し、その後に .0 を追加する方法

MySQL のデータ型は datetime です。データベースに保存されているデータは 2015-0...

Reactベースのコンポーネントのカプセル化の実装手順

目次序文antd はどのようにしてコンポーネントをカプセル化するのでしょうか?ディバイダーコンポーネ...

HTML 適応テーブル方式

<body style="scroll:no"> <テーブルの...

ミニマルなウェブサイトデザインの例

Web アプリケーション クラス1. みんなのためにダウンまたは私だけのためにこのウェブサイトは、ウ...

Docker実践: Pythonアプリケーションのコンテナ化

1. はじめにコンテナはサンドボックス メカニズムを使用して相互に分離します。コンテナ内にデプロイさ...

HTML で複数のフォームのテキスト ボックスを揃える方法

フォームのコードは図の通りです。スタイルシートがまだ追加されていないため、フォームが整列されておらず...

発生したブラウザの互換性の問題と解決策(推奨)について

序文:先週の日曜日、先輩から3ページ作るのを手伝って欲しいと頼まれました。データのやり取りなどはなく...

JavaScript ドラッグタイム ドラッグケースの詳細な説明

目次DragEvent インターフェースデータ転送インターフェースの概要DataTransfer の...

データベースインデックスの知識ポイントの概要

目次ファーストルックインデックスインデックスの概念インデックスファイルの構成インデックスの役割SQL...

Vueでデータ例を定義する方法

序文開発プロセスにおいて、変数の定義は非常に頻繁かつ基本的なタスクです。変数の使用シナリオと範囲に応...

CSS はコンテナ レベル (div...) タグを 1 つの位置 (ページの右端) に固定します。

コードは次のようになります。 。プロセス{ 境界線:1px 実線 #B7B7B8; 背景:#F8F8...

docker イメージのプル速度が遅い問題の解決策

現在、Docker には中国向けの公式ミラーがあります。詳細については、https://www.do...