WebSocketは、クライアントとサーバー間の永続的な接続がリアルタイムデータの双方向伝送を実現できるTCPベースのフルダプレックス通信プロトコルです。従来のHTTPポーリングと比較して、WebSocketは、インスタント通信やリアルタイムプッシュなどのシナリオの効率が高く、レイテンシーが低くなっています。
実際の展開では、NGINXをフロントエンドプロキシサーバーとして使用して、ロードバランス、セキュアアクセス制御、パス転送、その他の機能を処理する必要があることがよくあります。 WebSocketプロトコルをサポートするために、接続を安定して継続的にバックエンドサービスに配信できるように、NGINXの追加構成が必要です。
まず、Nginxがサーバーにインストールされていることを確認してください。パッケージ管理ツールを介してインストールできます。
sudo apt install nginx#debian/ubuntuシステムsudo yumインストールnginx#centosシステム
インストールが完了した後、 NGINX -Vを使用してバージョンを表示して、インストールが成功したことを確認できます。
次に、nginx構成ファイル、通常は/etc/nginx/nginx.confの構成ファイルまたはサイト対応を変更する必要があります。
マップ$ http_upgrade $ connection_upgrade { デフォルトのアップグレード。 '' 近いい; } 上流のバックエンド{ サーバー127.0.0.1:8080; }
この構成の目的は、WebSocket接続のアップグレードヘッダーのマッピングを設定し、バックエンドアプリケーションのアドレスを指定することです。
場所 /websocket { proxy_pass http:// backend; proxy_http_version 1.1; proxy_set_headerアップグレード$ http_upgrade; proxy_set_header connection $ connection_upgrade; }
この構成は、バックエンドへの/websocketパスにアクセスするリクエストを転送し、必要なヘッダー情報を運び、WebSocketハンドシェイクプロセスをスムーズに完了できるようにします。
構成が完了したら、次のコマンドを実行してnginxサービスを再起動します。
Sudo Service Nginx Restart
構成が正しい場合、NginxはWebSocket接続の転送をサポートします。
ブラウザまたは他のクライアントツールを介してWebSocketが正常に接続されているかどうかをテストできます。これが基本的なJavaScriptの例です。
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プロキシWebSocxeを構成することにより、高性能で安定したリアルタイム通信サポートを実現できます。 Nginx自体はWebSocketロジックを処理せず、接続の転送とプロトコル関連のヘッダーの処理のみを担当しています。バックエンドには、WebSocketサービス機能が必要です。最新のWebアプリケーションを展開するとき、Nginxのプロキシ関数とバックエンドWebsocketサービスを組み合わせることは、リアルタイムのデータ相互作用に理想的な選択です。