WebSocket ist ein TCP-basierter Zwei-Wege-Kommunikationsprotokoll, das anhaltende Verbindungen unterstützt und in Echtzeitkommunikation, Online-Chat, Live-Broadcast-Push und anderen Szenarien häufig verwendet wird. Im Allgemeinen muss der Datenfluss über einen Proxy-Server zwischen dem Front-End und dem Back-End übertragen werden, und Nginx als Hochleistungs-Reverse-Proxy-Server kann die Anforderungs-Weiterleitungsaufgabe von WebSocket gut abschließen.
Vor Beginn der Konfiguration müssen Sie sicherstellen, dass Nginx im System installiert ist. Wenn es nicht installiert wurde, kann es über den verwendeten Betriebssystem über den Paketmanager oder den Quellcode installiert werden.
Öffnen Sie die Hauptkonfigurationsdatei von Nginx, die normalerweise in /etc/nginx/nginx.conf liegt, und fügen Sie dem HTTP -Block den folgenden Inhalt hinzu:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream backend {
server 127.0.0.1:8080;
}
Die MAP -Anweisung wird verwendet, um die Informationen des Upgrade -Headers zu verarbeiten, um die Verbindungsanforderungen von WebSocket anzupassen. Die Upstream -Konfiguration definiert die Adresse des Backend Application Servers.
Fügen Sie als nächstes die Konfiguration hinzu, um WebSocket -Anforderungen im Serverblock zu bearbeiten:
location /websocket {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
Der Zweck dieses Konfigurationsblocks besteht darin, Anfragen vom Pfad /Websocket -Pfad zum Backend -Dienst zu leiten und gleichzeitig sicherzustellen, dass die erforderlichen WebSocket -Felder im HTTP -Anfrage -Header aufbewahrt werden.
Nach Abschluss der Änderungskonfiguration muss der NGINX -Dienst neu geladen oder neu gestartet werden. Führen Sie einfach den folgenden Befehl aus:
<span class="fun">sudo service nginx neu starten</span>
Stellen Sie sicher, dass es keine Syntaxfehler oder Portbelegung gibt, bevor die Konfiguration erfolgreich wirksam wird.
Nach Abschluss der serverseitigen Konfiguration können Sie ein einfaches Front-End-Beispiel verwenden, um zu testen, ob die WebSocket-Verbindung erfolgreich hergestellt wird. Hier ist ein Beispiel für JavaScript -Code:
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");
};
Einbetten Sie den obigen Code in die HTML -Datei ein. Nach dem Öffnen der Seite im Browser bedeutet dies, dass die Verbindung erfolgreich ist, wenn die Konsole "mit WebSocket verbunden" ausgibt.
Durch die Konfigurationsschritte in diesem Artikel kann der NGINX-Proxy-Server das WebSocket-Protokoll unterstützen und so effiziente Zwei-Wege-Kommunikationsfunktionen erzielen. Diese Architektur eignet sich besonders für Szenarien, die eine Echtzeit-Interaktion erfordern, z. B. Online-Spiele, Echtzeitdaten-Dashboards, Chat-Systeme usw. Es ist zu beachten, dass Nginx nur als Zwischenproxy vorhanden ist und der reale WebSocket-Service immer noch von der Backend-Anwendung verarbeitet wird.