ホームページ  >  記事  >  運用・保守  >  Nginx を使用して WebSocket プロトコルのサポートを実装する方法

Nginx を使用して WebSocket プロトコルのサポートを実装する方法

王林
王林オリジナル
2023-08-03 18:21:232296ブラウズ

Nginx を使用して WebSocket プロトコルのサポートを実装する方法

WebSocket プロトコルは、Web アプリケーションで双方向通信を実装するプロトコルです。これにより、クライアントが最初に開始しなくても、サーバーがクライアントにアクティブにデータを送信できます。お願いです。従来の HTTP プロトコルと比較して、WebSocket プロトコルは待ち時間が短く、効率が高いため、高いリアルタイム要件を持つアプリケーション シナリオに適しています。この記事では、WebSocket プロトコルをサポートするリバース プロキシとして Nginx を使用する方法を紹介します。

Nginx は、負荷分散、リバース プロキシ、静的ファイル キャッシュなどのシナリオで使用できる、高性能のオープンソース リバース プロキシ サーバーです。 Nginx は、WebSocket プロトコルをサポートするためのいくつかのモジュールとディレクティブも提供します。以下は簡単な構成例です。

http {
    # 其他的http配置

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

    server {
        listen 80;

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

上記の構成では、WebSocket 接続リクエストを処理するための /ws/ パスを定義します。 WebSocket リクエストは http://backend アドレスにプロキシされます。 proxy_pass ディレクティブはプロキシのバックエンド サーバー アドレスを設定するために使用され、proxy_http_version ディレクティブはプロキシの HTTP プロトコル バージョンを設定するために使用されます。 proxy_set_header ディレクティブは、リクエスト ヘッダー情報を設定するために使用されます。そのうちの UpgradeConnection は必須であり、サーバーにプロトコルのアップグレードを実行するように通知するために使用されます。

上記の設定の map ディレクティブは、クライアント要求ヘッダーの Upgrade フィールドを $http_upgrade## にマップするために使用されることに注意してください。 # 変数を使用し、その値に基づいて $connection_upgrade 変数を動的に設定します。これにより、リクエスト内に Upgrade フィールドが見つかった場合、Upgrade フィールドの値を $connection_upgrade フィールドの値に設定できます。接続が閉じられます。

設定が完了したら、Nginx を起動するだけです:

sudo service nginx start

これで、WebSocket プロトコルをサポートするリバース プロキシとして Nginx を使用する設定が完了しました。次のコード スニペットを使用して、WebSocket 接続をテストできます。

var socket = new WebSocket("ws://yourdomain.com/ws/");
socket.onopen = function () {
    console.log("Connection established.");
};
socket.onmessage = function (event) {
    console.log("Received message: ", event.data);
};
socket.onclose = function () {
    console.log("Connection closed.");
};

ws://yourdomain.com/ws/ を実際の WebSocket アドレスに置き換え、ブラウザの開発者ツールを開いて表示します。コンソール出力。正常に接続してメッセージを受信できれば、WebSocket プロトコルが Nginx で正常にサポートされていることを意味します。

要約すると、上記の構成とコード例を通じて、Nginx を使用して WebSocket プロトコルを簡単にサポートできるため、高いリアルタイム要件を持つ双方向通信を実現できます。

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

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