Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So verwenden Sie Nginx zur Implementierung der WebSocket-Protokollunterstützung

So verwenden Sie Nginx zur Implementierung der WebSocket-Protokollunterstützung

王林
王林Original
2023-08-03 18:21:232312Durchsuche

So verwenden Sie Nginx zur Implementierung der WebSocket-Protokollunterstützung

Das WebSocket-Protokoll ist ein Protokoll, das die bidirektionale Kommunikation in Webanwendungen implementiert. Es ermöglicht dem Server, aktiv Daten an den Client zu senden, ohne dass der Client zuerst eine Anfrage initiiert. Im Vergleich zum herkömmlichen HTTP-Protokoll weist das WebSocket-Protokoll eine geringere Latenz und eine höhere Effizienz auf und eignet sich für Anwendungsszenarien mit hohen Echtzeitanforderungen. In diesem Artikel wird erläutert, wie Sie Nginx als Reverse-Proxy zur Unterstützung des WebSocket-Protokolls verwenden.

Nginx ist ein leistungsstarker Open-Source-Reverse-Proxy-Server, der für Lastausgleich, Reverse-Proxy, statisches Datei-Caching und andere Szenarien verwendet werden kann. Nginx stellt außerdem einige Module und Anweisungen zur Unterstützung des WebSocket-Protokolls bereit. Das Folgende ist ein einfaches Konfigurationsbeispiel:

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;
        }
    }
}

In der obigen Konfiguration haben wir einen /ws/-Pfad definiert, um WebSocket-Verbindungsanfragen zu verarbeiten. WebSocket-Anfragen werden per Proxy an die http://backend-Adresse weitergeleitet. Die proxy_pass-Direktive wird verwendet, um die Back-End-Serveradresse des Proxys festzulegen, und die proxy_http_version-Direktive wird verwendet, um die HTTP-Protokollversion des Proxys festzulegen. Die proxy_set_header-Direktive wird zum Festlegen von Anforderungsheaderinformationen verwendet, von denen Upgrade und Connection erforderlich sind und dazu dienen, den Server zu informieren, das Protokoll zu aktualisieren . /ws/路径,用于处理WebSocket的连接请求。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

现在,我们已经完成了使用Nginx作为反向代理来支持WebSocket协议的配置。我们可以使用以下代码片段来测试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/

Es ist zu beachten, dass die map-Direktive in der obigen Konfiguration verwendet wird, um das Feld Upgrade im Client-Anfrage-Header dem $http_upgradezuzuordnen > Variable und legen Sie die Variable $connection_upgrade dynamisch entsprechend ihrem Wert fest. Wenn das Feld Upgrade in der Anfrage gefunden wird, wird auf diese Weise der Wert des Felds Upgrade auf den Wert von $connection_upgrade gesetzt Andernfalls wird die Verbindung geschlossen.

Nachdem die Konfiguration abgeschlossen ist, müssen wir nur noch Nginx starten: 🎜rrreee🎜Jetzt haben wir die Konfiguration der Verwendung von Nginx als Reverse-Proxy zur Unterstützung des WebSocket-Protokolls abgeschlossen. Wir können den folgenden Codeausschnitt verwenden, um die WebSocket-Verbindung zu testen: 🎜rrreee🎜Ersetzen Sie ws://yourdomain.com/ws/ durch die tatsächliche WebSocket-Adresse und öffnen Sie die Entwicklertools des Browsers, um die Kontrollstation anzuzeigen Ausgabe. Wenn Sie eine normale Verbindung herstellen und Nachrichten empfangen können, bedeutet dies, dass das WebSocket-Protokoll erfolgreich von Nginx unterstützt wurde. 🎜🎜Zusammenfassend lässt sich sagen, dass wir mithilfe der obigen Konfigurations- und Codebeispiele Nginx problemlos zur Unterstützung des WebSocket-Protokolls verwenden können, um eine bidirektionale Kommunikation mit hohen Echtzeitanforderungen zu erreichen. 🎜

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Nginx zur Implementierung der WebSocket-Protokollunterstützung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn