WebSocketは、サーバーとクライアント間のリアルタイムで永続的な双方向通信を可能にするTCPベースのフルダプレックス通信プロトコルです。この機能により、ライブチャット、リアルタイムデータプッシュ、その他のシナリオに非常に適しています。実際の展開では、Nginxは通常、WebSocket Connection Requestsを転送および管理するための逆プロキシサーバーとして使用する必要があります。
まず、Nginxがサーバー環境に正しくインストールされていることを確認してください。インストールされていない場合、対応するインストールコマンドを実行することにより、オペレーティングシステムに従って展開を完了できます。
nginxをサポートするWebSocketをサポートするには、構成ファイルを調整する必要があります。 HTTPモジュールに追加された構成の例を次に示します。
マップ$ http_upgrade $ connection_upgrade { デフォルトのアップグレード。 '' 近いい; } 上流のバックエンド{ サーバー127.0.0.1:8080; }
この構成の目的は、クライアントリクエストヘッダーのアップグレードフィールドをカスタム変数$ connection_upgradeにマッピングすることです。同時に、バックエンドという名前の上流サーバーが定義されており、ローカルポート8080を指しています。
次の位置構成をサーバーブロックに追加して、マッチングパスのWebSocketリクエストを処理します。
場所 /websocket { proxy_pass http:// backend; proxy_http_version 1.1; proxy_set_headerアップグレード$ http_upgrade; proxy_set_header connection $ connection_upgrade; }
この構成は、プロキシパス、転送アドレス、および必要なリクエストヘッダーフィールドを設定して、WebSocket接続を正常にプロキシにできることを確認するために使用されます。
構成ファイルを変更した後、ファイルを保存して閉じてから、コマンドラインのnginxサービスを再起動して構成を有効にします。
Sudo Service Nginx Restart
WebSocketクライアントツールを使用するか、シンプルなWebページを作成して、WebSocket接続が有効かどうかをテストできます。これが基本的な例です。
var ws = new WebSocket( "ws:// your_domain/websocket"); ws.onopen = function(){ console.log( "websocketに接続"); }; ws.onmessage = function(event){ console.log( "受信メッセージ:" + event.data); }; ws.onclose = function(){ console.log( "WebSocketから切断された"); };
上記のコードをHTMLファイルとして保存し、ブラウザで開きます。開発者ツールで接続が成功するためのプロンプトが表示された場合、構成は成功します。
Nginxのプロキシ関数を構成することにより、バックエンドアプリケーション用のWebSocketプロトコルのサポートを提供できます。この方法は、通信効率を向上させるだけでなく、Nginxの高性能とセキュリティの特性の助けを借りて、システム全体をより安定してスケーラブルにします。 Nginx自体はWebsocketプロトコルを処理せず、中間プロキシとしてのみ機能し、処理のためにバックエンドアプリケーションに接続を転送することに注意してください。より複雑なWebsocketサービスロジックを実装する必要がある場合は、処理に専用のバックエンドWebsocketサーバーを使用することをお勧めします。