Nginx によるソケット ポート転送の一般的なシナリオ: オンライン学習アプリケーションでは、通常の機能に加えてチャット ルーム機能が追加され、バックエンドではサービス プロバイダーとして swoole が選択され、フロントエンドが ip:port モードでサービスに直接リンクすることを望まないため、転送には Nginx を使用する必要があります。 通常、ユーザー ページでソケット リンクを直接確立できますが、このような操作を行うとポートが公開され、セキュリティ上のリスクが生じます。転送に Nginx を使用すると、ポートを非表示にできます。追加の問題は、転送プロセス中に一部のヘッダー パラメータもソケット サービス プロバイダーに渡す必要があり、残りは通常のプロトコルから Websocket への変換を Nginx で処理するだけで済むことです。 このうち、「Upgrade」はホップバイホップのヘッダーであり、クライアントからプロキシサーバーに転送することはできません。プロキシを転送することで、クライアントは CONNECT メソッドを使用してこの問題を回避できます。ただし、クライアントはプロキシ サーバーを認識せず、プロキシ サーバー上で特別な処理を必要とするため、これはリバース プロキシでは機能しません。同時に、「Upgrade」と「Connection」を含むホップバイホップ ヘッダーは渡すことができないため、Websocket に変換するときに次の 2 つのパラメーターを指定する必要があります。例: 場所 /チャット/ { proxy_pass http://backend; プロキシ_http_バージョン 1.1; proxy_set_header アップグレード $http_upgrade; proxy_set_header 接続「アップグレード」; } 詳細: プロキシ サーバーに転送される「接続」ヘッダー フィールドの値が、クライアント要求ヘッダーの「アップグレード」フィールドの値に依存するようにします。例えば: http { マップ $http_upgrade $connection_upgrade { デフォルトのアップグレード。 '' 近い; } サーバー{ ... 場所 /チャット/ { proxy_pass http://backend; プロキシ_http_バージョン 1.1; proxy_set_header アップグレード $http_upgrade; proxy_set_header 接続 $connection_upgrade; } } 注: 例の http://backend は、負荷分散されたサーバーのグループです。サーバーが 1 つしかない場合は、proxy_pass http://127.0.0.1:9501; のように記述できます。 さらに、デフォルトでは、60 秒以内にデータを転送しなかった接続は閉じられますが、この時間は proxy_read_timeout ディレクティブを使用して延長できます。あるいは、プロキシ サーバーを構成して、定期的に ping フレームを送信し、タイムアウトをリセットしてリンクが利用可能かどうかを確認することもできます。 参考リンク: Nginx Websocket プロキシ 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: mysql の認証、起動、およびサービスの起動のための一般的なコマンド
>>: JSフロントエンドモジュール化のいくつかの仕様についての簡単な説明
1. トランザクションはACID特性を持つ原子性: トランザクションは、トランザクションによって分割...
この記事の例では、カウントダウン効果を実現するためのJavaScriptの具体的なコードを参考までに...
よく遭遇する問題: 下部の要素を「下部に貼り付ける」効果を CSS でどのように実現するか。この記事...
MySQLは1つのテーブルからデータをクエリし、それを別のテーブルに挿入する実装方法ウェブサイト開発...
この記事では、参考までに、テキストループスクロールを実現するアプレットの具体的なコードを例を挙げて紹...
MySQL を使用してデータベースをクエリし、左結合を実行すると、関連付けられたフィールドの一部に...
まず、Navicat for MySQL をダウンロードしてインストールする必要があります。正規版の...
1eChartsの基本手順4つのステップ1 DOMコンテナを見つける2 初期化3 設定オプション4 ...
CSS ファイルでは、フォント名が文字化けしていることがよくあります。これは、作成者が中国語フォン...
目次序文VMware クローン仮想マシン (準備、3 台の仮想マシンのクローン、1 台のマスター、2...
目次単一ノード差分単一要素を調整するマルチノード差分調整子配列ノードが移動したかどうかを判断するには...
目次1. 重複排除前後のデータの比較2. 使い方1. フィルターとマップを使用する2. 削減を使用す...
最近、webpackの使い方を学んでいたときに、webpack-replace-loaderの設定正...
この記事では、Docker を使用して Centos6 に Zookeeper をデプロイする方法に...
mysql 8.0.11 winx64のインストールチュートリアルは以下のように記録され、みんなと共...