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

推薦する

Vue要素ヘッダーにスラッシュを追加するための実装コード

<テンプレート> <div class="アプリコンテナ"&...

CSS で QR コードスキャンボックスを実装するためのサンプルコード

カメラを開くと通常はスキャンボックスが表示されますが、静的なQRコードではフォーカスを合わせたりスキ...

js の一般的でない演算子と演算子の概要

一般的な演算子と JavaScript の演算子の概要カテゴリオペレーター算術演算子+、–、*、/、...

jQuery で従業員管理登録ページを実装する

この記事では、従業員管理登録ページを実装するためのjQueryの具体的なコードを例として紹介します。...

Vue イベントの $event パラメータ = イベント値の場合

テンプレート <el-table :data="データリスト"> &...

IIS7 IIS8 http は自動的に HTTPS にジャンプします (ポート 80 はポート 443 にジャンプします)

IIS7 では、「URL REWRITE2」疑似静的モジュールがインストールされているかどうかを確...

Robots.txtの詳細な紹介

Robots.txt はプレーンテキスト ファイルであり、Web サイト管理者は、ロボットによるアク...

Linux インストール Apache サーバー構成プロセス

袋を用意するインストールApacheがすでにインストールされているかどうかを確認するrpm -qa ...

MySql COALESCE 関数の使用コード例

COALESCE は、各パラメータ式 (expression_1、expression_2、...、...

sysbenchツールによるMySQLデータベースのパフォーマンステストの実装方法

1. 背景Sysbench は、システムのハードウェア パフォーマンスをテストできるストレス テスト...

HTML における rel="nofollow" の役割と rel 属性の使用を分析する

リンクに rel="nofollow" 属性を追加すると、検索エンジンにこの接続...

Vue で Excel ストリーム ファイルをダウンロードし、ダウンロード ファイル名を設定する方法

目次概要1. URL経由でダウンロード2. aタグのダウンロード属性とblobコンストラクタを組み合...

AngularパイプラインPIPEの紹介と使い方

序文PIPE、パイプラインと翻訳されます。 Angular パイプは、HTML コンポーネントで宣言...

横スクロールウェブサイトデザインの概要

水平スクロールはあらゆる状況に適しているわけではありませんが、適切に行えば、Web サイトを他のサイ...

複合主キーと複数列インデックスに遭遇した場合の MySQL 行ロックの詳細な説明

背景今日、他のプロジェクト チームと協力してシス​​テムのストレス テストを実施しているときに、プロ...