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つの戦略

推薦する

JavaScript デザインパターン プロキシパターンの学習

目次概要実装保護エージェント仮想エージェント画像の遅延読み込みを実現する仮想プロキシ概要プロキシ パ...

Mysql のデッドロックの表示とデッドロックの除去の詳細な説明

序文しばらく前にMysqlのデッドロック問題に遭遇したので、解決しました。問題の説明: Mysql ...

Windows 10 に TomCat をインストールするチュートリアル図

WindowsにTomCatをインストールするこの記事では、WindowsプラットフォームにTomC...

CSS でテキストシャドウと要素シャドウ効果を使用する

テキストシャドウの紹介CSSでは、 text-shadowプロパティを使用してテキストの影を設定しま...

CentOS で yum を使用して rabbitmq-server をインストールする方法

RabbitMQをインストールする前にSocatをインストールする必要があります。そうしないと、Ra...

innerHTML アプリケーション

ブランクのブログ: http://www.planabc.net/ innerHTML プロパティは...

JavaScript 配列重複排除問題の詳細な研究

目次序文 👀リサーチを始めましょう🐱‍🏍オリジナル🧶 indexOf を使用した元の方法の最適化 ✍...

Vue: メモリリークの詳細な説明

メモリリークとは何ですか?メモリ リークとは、新しいメモリが作成されたが、解放またはガベージ コレ...

MySQLのMVCCマルチバージョン同時実行制御の実装

1 MVCCとは何かMVCC の正式名称は、マルチバージョン同時実行制御です。データベースへの同時ア...

MySQLの使い方の詳細な説明

目次1. はじめに2. 本文2.1 Where句の位置2.2 演算子2.3 NULL値1. はじめに...

Vueはコンピュータカメラを呼び出して写真機能を実現します

この記事の例では、コンピュータカメラを呼び出して写真機能を実現するためのvueの具体的なコードを参考...

HTMLで境界線を設定する3つの方法の詳細な説明

HTML で境界線を設定する 3 つの方法 境界線の幅: 1px 2px 2px; 境界線のスタイル...

ショッピングカートのスライド削除効果を実装するReactネイティブサンプルコード

基本的にすべてのeコマースプロジェクトにはショッピングカートの機能があります。これはreact-na...

HTML ヘッド構造

以下では、よく使われるヘッド構造と、各タグや要素の意味や使用シーンを紹介します(この記事は、Yisi...

CSS3 で translate と transition を使用する方法

translate と transition は非常に強力で、習得するのは不可能だといつも感じていま...