Heim > Backend-Entwicklung > PHP-Tutorial > Wie verwende ich den Nginx-Proxyserver, um die WebSocket-Protokollunterstützung zu implementieren?

Wie verwende ich den Nginx-Proxyserver, um die WebSocket-Protokollunterstützung zu implementieren?

WBOY
Freigeben: 2023-09-05 08:10:02
Original
1587 Leute haben es durchsucht

Wie verwende ich den Nginx-Proxyserver, um die WebSocket-Protokollunterstützung zu implementieren?

Wie verwende ich den Nginx-Proxyserver, um die WebSocket-Protokollunterstützung zu implementieren?

WebSocket ist ein auf TCP basierendes Vollduplex-Kommunikationsprotokoll, das es dem Server und dem Client ermöglicht, eine bidirektionale Kommunikation in Echtzeit durchzuführen, indem es einen Kommunikationskanal aufbaut, über den beide Parteien eine langfristige Verbindung aufrechterhalten können Echtzeitkommunikation, Instant-Chat, Szenarien wie Echtzeit-Daten-Push. Bei der Verwendung von WebSocket müssen wir häufig den Proxyserver so konfigurieren, dass er WebSocket-Anfragen und -Antworten weiterleitet. In diesem Artikel wird erläutert, wie Sie den Nginx-Proxyserver verwenden, um die Unterstützung für das WebSocket-Protokoll zu implementieren.

Schritt 1: Nginx installieren

Zuerst müssen wir sicherstellen, dass Nginx auf dem Proxyserver installiert ist. Wenn es nicht installiert ist, wählen Sie bitte die entsprechende Installationsmethode entsprechend dem Betriebssystem.

Schritt 2: Ändern Sie die Nginx-Konfigurationsdatei

Als nächstes müssen wir die Nginx-Konfigurationsdatei ändern. Öffnen Sie die Nginx-Konfigurationsdatei und fügen Sie den folgenden Code im http-Block hinzu: http块中添加以下代码:

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

upstream backend {
    server 127.0.0.1:8080;
}
Nach dem Login kopieren

上述代码中,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;
}
Nach dem Login kopieren

上述代码中,location指令用于匹配WebSocket请求的路径。proxy_pass指令用于将请求转发给后端服务器。proxy_http_version指令用于指定代理协议的版本。proxy_set_header指令用于设置请求头,将UpgradeConnection

sudo service nginx restart
Nach dem Login kopieren

Im obigen Code wird die map-Direktive verwendet, um das Upgrade< zu ändern / im Anforderungsheader Der Wert des Felds code> wird dem Wert der Variablen <code>$connection_upgrade zugeordnet. Mit der Direktive upstream wird die lokale Adresse 127.0.0.1:8080 verwendet. Sie können sie entsprechend der tatsächlichen Situation ändern.

Fügen Sie den folgenden Code im Block server hinzu:

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");
};
Nach dem Login kopieren
Im obigen Code wird die Direktive location verwendet, um den Pfad der WebSocket-Anfrage abzugleichen. Die proxy_pass-Direktive wird verwendet, um die Anfrage an den Backend-Server weiterzuleiten. Die proxy_http_version-Direktive wird verwendet, um die Version des Proxy-Protokolls anzugeben. Die proxy_set_header-Direktive wird verwendet, um den Anforderungsheader festzulegen und die Felder Upgrade und Connection unverändert an den Backend-Server weiterzuleiten.

Schritt 3: Starten Sie den Nginx-Dienst neu.

Speichern und schließen Sie die Datei, nachdem Sie die Änderung der Konfigurationsdatei abgeschlossen haben. Starten Sie dann den Nginx-Dienst neu, damit die Konfiguration wirksam wird. Geben Sie den folgenden Befehl in die Befehlszeile ein:

rrreee

Schritt 4: Testen Sie die WebSocket-Verbindung

An diesem Punkt haben wir die Konfiguration von Nginx abgeschlossen. Als Nächstes können wir das WebSocket-Client-Tool verwenden oder eine einfache Webanwendung schreiben, um die WebSocket-Verbindung zu testen. Hier ist ein einfacher Beispielcode: 🎜rrreee🎜 Speichern Sie den obigen Code als HTML-Datei und öffnen Sie die Datei in Ihrem Browser. Wenn Sie in den Entwicklertools des Browsers die Ausgabe „Mit WebSocket verbunden“ sehen, bedeutet dies, dass die WebSocket-Verbindung erfolgreich war. 🎜🎜Zusammenfassung: Durch die oben genannten Schritte haben wir den Nginx-Proxyserver erfolgreich verwendet, um die Unterstützung für das WebSocket-Protokoll zu implementieren. Auf diese Weise können wir die leistungsstarke Leistung und flexible Konfiguration von Nginx nutzen, um eine effizientere und stabilere WebSocket-Kommunikation zu erreichen. Es ist jedoch zu beachten, dass Nginx selbst kein WebSocket-Server ist, sondern nur als Proxyserver verwendet wird, um WebSocket-Verbindungen zur Verarbeitung an den Back-End-Server weiterzuleiten. Wenn Sie einen vollständigen WebSocket-Server bereitstellen müssen, können wir die Verwendung einer anderen dedizierten WebSocket-Serversoftware in Betracht ziehen. 🎜

Das obige ist der detaillierte Inhalt vonWie verwende ich den Nginx-Proxyserver, um die WebSocket-Protokollunterstützung zu implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage