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

推薦する

Flash での HTML と CSS の適用

Flash での HTML と CSS の適用:同僚の Den が Flash で HTML と C...

Webpack ファイル パッケージ化エラー例外

webpack をパッケージ化する前に、次の作業が完了していることを確認する必要があります。 1) ...

負のz-indexを持つ要素がクリックできない問題の解決策

最近、ポップアップ広告に取り組んでいました。デフォルト ページには z-index が設定されていな...

Linux スワップメモリ​​を拡張する方法

スワップ メモリとは、主に物理メモリが不足している場合に、システムがハード ディスク領域の一部をサー...

FastApi+Vue+LayUIを使用してフロントエンドとバックエンドを分離するサンプルコード

目次序文プロジェクト設計後部フロントエンドプロジェクトを実行する質疑応答序文これまでの API 開発...

MySQL で削除されたレコードが有効にならない理由のトラブルシューティング

オンライン MySQL トランザクションの問題の記録先週の金曜日、大きなテーブルを削除する操作を実行...

1つの記事でTypeScriptのデータ型について学ぶ

目次基本タイプあらゆるタイプ配列タプルインタフェース関数自己推論を入力する結合タイプ(1つ以上選択)...

6ull が Linux ドライバ モジュールをロードできない問題の解決方法

目次0x01 ドライバーモジュールのロードに失敗しました0x02 ソリューション要約する0x01 ド...

Vueプロジェクトのパッケージングと展開の実際のプロセスの記録

目次序文1. 準備 - サーバーとnginxの使用1. サーバーを準備する2. nginxをインスト...

Vueコンポーネント通信のさまざまな方法の詳細な説明

目次1. 父から息子へ2. 息子から父へ3. 親子関係のないコンポーネントの値の転送4. ヴュークス...

JS、CSS スタイルのリファレンスの記述

CS: ... 1. <link type="text/css" href...

VMware 12 での Ubuntu 16.04 インストール チュートリアル

この記事では、VMware 12でのUbuntu 16.04のインストールチュートリアルを参考までに...

ブリージングカルーセルを実装するネイティブJS

今日は、ネイティブ JS で実装されたブリージング カルーセルを紹介します。効果は次のとおりです。 ...

Vueタイマーの詳細な使い方

この記事では、参考までにタイマーを実装するためのVueの具体的なコードを紹介します。具体的な内容は次...

ページキャッシュを無効にするいくつかの方法を共有する

本日、開発中に、顧客からページをキャッシュしないように要求される方法に遭遇しました。調べたところ、ペ...