リアルタイム通信を実現するための Nginx リバース プロキシ Websocket 構成チュートリアル
概要:
この記事では、Websocket とのリアルタイム通信を実現するために、Nginx を介してリバース プロキシを構成する方法を紹介します。 Websocket は、クライアントとサーバー間の全二重リアルタイム通信を可能にする最新のネットワーク通信プロトコルです。
背景:
従来の HTTP プロトコルでは、クライアントがサーバーにリクエストを送信し、サーバーが応答を返すとすぐに接続が切断されるため、リアルタイム通信は実現できません。 。 Websocket プロトコルはこの問題を解決し、長期にわたる双方向接続を確立することでクライアントとサーバー間のリアルタイム通信を実現します。
手順:
まず、Nginx がサーバーにインストールされていることを確認します。インストールされていない場合は、オペレーティング システムに応じて、対応するパッケージ管理ツールを使用してインストールしてください。
Nginx 構成ファイル (通常は /etc/nginx/nginx.conf にあります) を開き、サーバー セクションを見つけて、次の構成:
server { listen 80; server_name your.domain.com; location /websocket { proxy_pass http://backend_server:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
ここでは、クライアントによって要求された「/websocket」パスがバックエンド サーバーの 3000 ポートにプロキシされます。同時に、Nginx が Websocket 接続をサポートするように Upgrade ヘッダーと Connection ヘッダーを設定します。
「your.domain.com」を独自のドメイン名に置き換え、「http://backend_server:3000」を独自のバックエンド サーバーのアドレスとポートに置き換えてください。
設定ファイルを保存した後、次のコマンドを実行して Nginx を再起動します:
sudo service nginx restart
このようにして、Nginx は逆の処理を実行します。設定に従ってプロキシを設定し、Websocket リクエストをバックエンド サーバーに転送します。
サンプル コード:
以下は、Node.js と ws ライブラリを使用した、単純な Websocket サーバーのサンプル コードです:
const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 3000 }); wss.on('connection', (ws) => { ws.on('message', (message) => { console.log('Received message: ', message); ws.send('Server received: ' + message); }); ws.on('close', () => { console.log('Connection closed'); }); });
このサンプル コードは、Websocket サーバーを作成します。ポート 3000 をリッスンします。クライアントは接続に成功すると、受信したメッセージを出力し、クライアントに応答を送り返します。
テスト:
これで、クライアントで Websocket 接続を作成し、Nginx によって構成されたドメイン名に接続できます。パスは「/websocket」です。メッセージを開始すると、サーバーから応答が受信されます。
概要:
Nginx のリバース プロキシ構成を通じて、Websocket リクエストをバックエンド サーバーに簡単に転送して、リアルタイム通信を実現できます。これにより、優れた柔軟性と拡張性を備えたリアルタイム アプリケーションの構築が容易になります。
本番環境では、Nginx とバックエンド サーバーのセキュリティと信頼性を確保し、必要に応じて調整および監視することを忘れないでください。この記事が Nginx リバース プロキシ Websocket の理解と使用に役立つことを願っています。
以上がリアルタイム通信を実現するための Nginx リバース プロキシ Websocket 構成チュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。