ホームページ  >  記事  >  バックエンド開発  >  Nginx プロキシ サーバーを使用して WebSocket プロトコルのサポートを実装するにはどうすればよいですか?

Nginx プロキシ サーバーを使用して WebSocket プロトコルのサポートを実装するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-09-05 08:06:161568ブラウズ

Nginx プロキシ サーバーを使用して WebSocket プロトコルのサポートを実装するにはどうすればよいですか?

Nginx プロキシ サーバーを使用して WebSocket プロトコルのサポートを実装するにはどうすればよいですか?

WebSocket は、TCP をベースとした全二重通信プロトコルで、サーバーとクライアントが長期間接続を維持できる通信チャネルを確立することで、リアルタイムの双方向通信を可能にします。リアルタイム通信、インスタントチャット、リアルタイムデータプッシュなどのシナリオに適しています。 WebSocket を使用する場合、多くの場合、WebSocket の要求と応答を転送するようにプロキシ サーバーを構成する必要があります。この記事では、Nginx プロキシ サーバーを使用して WebSocket プロトコルのサポートを実装する方法を紹介します。

ステップ 1: Nginx をインストールする

まず、Nginx がプロキシ サーバーにインストールされていることを確認する必要があります。インストールされていない場合は、オペレーティング システムに応じて適切なインストール方法を選択してください。

ステップ 2: Nginx 構成ファイルを変更する

次に、Nginx 構成ファイルを変更する必要があります。 Nginx 構成ファイルを開き、次のコードを http ブロックに追加します。

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

upstream backend {
    server 127.0.0.1:8080;
}

上記のコードでは、map ディレクティブを使用して Upgrade を実行します。リクエストヘッダー フィールドの値は、$connection_upgrade 変数の値にマップされます。 upstream ディレクティブはバックエンド サーバーのアドレスを定義するために使用されます。ここではローカル アドレス 127.0.0.1:8080 が使用されます。実際の状況に応じて変更できます。

次のコードを server ブロックに追加します。

location /websocket {
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
}

上記のコードでは、location ディレクティブを使用して、 WebSocket リクエスト。 proxy_pass ディレクティブは、リクエストをバックエンド サーバーに転送するために使用されます。 proxy_http_version ディレクティブは、プロキシ プロトコルのバージョンを指定するために使用されます。 proxy_set_header ディレクティブは、リクエスト ヘッダーを設定し、Upgrade フィールドと Connection フィールドをそのままバックエンド サーバーに転送するために使用されます。

ステップ 3: Nginx サービスを再起動する

構成ファイルの変更が完了したら、ファイルを保存して閉じます。次に、構成を有効にするために Nginx サービスを再起動します。コマンド ラインに次のコマンドを入力します。

sudo service nginx restart

ステップ 4: WebSocket 接続をテストする

この時点で、Nginx の構成は完了です。次に、WebSocket クライアント ツールを使用するか、単純な Web アプリケーションを作成して WebSocket 接続をテストします。簡単なサンプル コードを次に示します。

var ws = new WebSocket("ws://your_domain/websocket");

ws.onopen = function() {
    console.log("Connected to WebSocket");
};

ws.onmessage = function(event) {
    console.log("Received message: " + event.data);
};

ws.onclose = function() {
    console.log("Disconnected from WebSocket");
};

上記のコードを HTML ファイルとして保存し、ブラウザでそのファイルを開きます。ブラウザの開発者ツールに「WebSocket に接続しました」という出力が表示された場合は、WebSocket 接続が成功したことを意味します。

概要: 上記の手順により、Nginx プロキシ サーバーを使用して WebSocket プロトコルのサポートを実装することができました。このようにして、Nginx の強力なパフォーマンスと柔軟な構成を利用して、より効率的で安定した WebSocket 通信を実現できます。ただし、Nginx 自体は WebSocket サーバーではなく、処理のために WebSocket 接続をバッ​​クエンド サーバーに転送するためのプロキシ サーバーとしてのみ使用されることに注意してください。完全な WebSocket サーバーを展開する必要がある場合は、他の専用 WebSocket サーバー ソフトウェアの使用を検討できます。

以上がNginx プロキシ サーバーを使用して WebSocket プロトコルのサポートを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。