即時通信を実現するNginxリバースプロキシWebSocketの構成
WebSocketはTCPプロトコルをベースとした通信プロトコルで、ブラウザとサーバー間に長期双方向接続を確立し、次のような機能を実現します。リアルタイム通信です。高性能 Web サーバーとして、Nginx はリバース プロキシを通じて WebSocket もサポートし、より優れた負荷分散と高い同時処理を実現します。
まず、Nginx でリバース プロキシを構成するには、nginx.conf
ファイルに location
構成を追加する必要があります。 WebSocket サーバーがローカル ポート 8000 で実行されていると仮定し、それを Nginx サーバーの 3000 ポートにリバース プロキシします。具体的な構成は次のとおりです:
server { listen 3000; server_name your.server.name; location / { proxy_pass http://localhost:8000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } }
上記の構成では、 proxy_pass
ディレクティブは、リバース プロキシとなる WebSocket サーバーのアドレスとポートを指定します。 proxy_http_version
リバース プロキシで使用される HTTP バージョンを指定します。ここでは 1.1 に設定されています。 proxy_set_header Upgrade
および proxy_set_header Connection
命令は、セキュリティを確保するために、WebSocket リクエストを転送するときに Upgrade
および Connection
リクエスト ヘッダーを変更しないように Nginx に指示します。 WebSocket 接続の通常どおり作成します。
WebSocket サーバーが HTTPS プロトコルで実行されている場合は、サーバーに次のように指示するために、proxy_set_header X-Forwarded-Proto $scheme;
ディレクティブを設定に追加する必要があることに注意してください。 HTTPS プロトコルを使用します。
上記の設定を完了したら、Nginx 設定ファイルをリロードして有効にします: sudo nginx -s reload
。
次に、WebSocket クライアントを使用して、リバース プロキシ構成が成功したかどうかをテストします。 JavaScript を例にとると、コードは次のとおりです。
var socket = new WebSocket('ws://your.server.name/'); socket.onopen = function() { console.log('WebSocket连接已建立'); }; socket.onmessage = function(event) { console.log('收到消息:' + event.data); }; socket.onclose = function() { console.log('WebSocket连接已关闭'); };
上記の例では、WebSocket オブジェクトを作成し、接続するアドレスを Nginx サーバーのアドレスとして指定しました。 onopen
、onmessage
、onclose
コールバック関数では、WebSocket 接続の成功、メッセージ受信、接続終了のイベントを処理できます。
上記の構成とコード例により、Nginx 上にリバース プロキシ WebSocket を実装し、インスタント メッセージング機能を実現できます。 Nginx の高いパフォーマンスと負荷分散メカニズムを通じて、WebSocket アプリケーションに安定した信頼性の高いサービスを提供し、多数の同時接続を処理できます。同時に、Nginx には成熟した運用、保守、監視ツールがあるため、WebSocket アプリケーションのパフォーマンスの最適化とトラブルシューティングを簡単に実行できます。
要約すると、Nginx は優れた Web サーバーであり、リバース プロキシ構成により、WebSocket を簡単にサポートし、高パフォーマンスのインスタント メッセージング サービスを提供できます。インスタント メッセージング機能を実装する必要がある Web アプリケーションにとって、Nginx リバース プロキシ構成は検討して使用する価値のあるソリューションです。
以上がインスタント通信を実現するための Nginx リバース プロキシ WebSocket 構成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。