Heim > Betrieb und Instandhaltung > Nginx > Nginx-Reverse-Proxy-WebSocket-Konfiguration für sofortige Kommunikation

Nginx-Reverse-Proxy-WebSocket-Konfiguration für sofortige Kommunikation

WBOY
Freigeben: 2023-07-05 08:36:09
Original
2288 Leute haben es durchsucht

Nginx-Reverse-Proxy-WebSocket-Konfiguration für sofortige Kommunikation

WebSocket ist ein Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert. Es stellt eine langfristige bidirektionale Verbindung zwischen dem Browser und dem Server her und realisiert so die Funktion der Echtzeitkommunikation. Als Hochleistungs-Webserver kann Nginx auch WebSocket über Reverse-Proxy unterstützen und einen besseren Lastausgleich und eine Verarbeitung mit hoher Parallelität erreichen.

Um den Reverse-Proxy in Nginx zu konfigurieren, müssen Sie zunächst eine location-Konfiguration in der Datei nginx.conf hinzufügen. Gehen Sie davon aus, dass der WebSocket-Server auf dem lokalen Port 8000 läuft, und wir leiten ihn per Reverse-Proxy an den 3000-Port des Nginx-Servers weiter. Die spezifische Konfiguration lautet wie folgt: nginx.conf文件中添加一段location的配置。假设WebSocket服务器运行在本地的8000端口上,我们将其反向代理到Nginx服务器的3000端口上,具体配置如下:

server {
    listen 3000;
    server_name your.server.name;
    
    location / {
        proxy_pass http://localhost:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}
Nach dem Login kopieren

在上述配置中,proxy_pass指令指定了要反向代理的WebSocket服务器的地址和端口。proxy_http_version指定了反向代理使用的HTTP版本,这里设置为1.1。proxy_set_header Upgradeproxy_set_header Connection指令告诉Nginx在转发WebSocket请求时不要修改UpgradeConnection请求头,以保证WebSocket连接的正常建立。

需要注意的是,如果WebSocket服务器运行在HTTPS协议下,需要在配置中添加proxy_set_header X-Forwarded-Proto $scheme;指令,以告诉服务器使用HTTPS协议。

完成以上配置后,重新加载Nginx配置文件使其生效:sudo nginx -s reload

接下来,我们可以使用WebSocket客户端来测试反向代理配置是否成功。以JavaScript为例,代码如下:

var socket = new WebSocket('ws://your.server.name/');
socket.onopen = function() {
    console.log('WebSocket连接已建立');
};
socket.onmessage = function(event) {
    console.log('收到消息:' + event.data);
};
socket.onclose = function() {
    console.log('WebSocket连接已关闭');
};
Nach dem Login kopieren

在上述示例中,我们创建了一个WebSocket对象,并指定了要连接的地址为Nginx服务器的地址。在onopenonmessageoncloserrreee

In der obigen Konfiguration ist der proxy_pass-Direktive gibt den Reverse-Proxy an. Die Adresse und der Port des WebSocket-Servers des Proxys. proxy_http_version gibt die vom Reverse-Proxy verwendete HTTP-Version an, hier ist sie auf 1.1 gesetzt. Die Anweisungen proxy_set_header Upgrade und proxy_set_header Connection weisen Nginx an, die Anforderungsheader Upgrade und Connection bei der Weiterleitung von WebSocket-Anfragen nicht zu ändern . Stellen Sie den normalen Aufbau der WebSocket-Verbindung sicher.

Es ist zu beachten, dass, wenn der WebSocket-Server unter dem HTTPS-Protokoll läuft, die Anweisung proxy_set_header X-Forwarded-Proto $scheme; zur Konfiguration hinzugefügt werden muss, um den Server anzuweisen, HTTPS zu verwenden Protokoll.

Nachdem Sie die obige Konfiguration abgeschlossen haben, laden Sie die Nginx-Konfigurationsdatei neu, um sie wirksam zu machen: sudo nginx -s reload. 🎜🎜Als nächstes können wir mit dem WebSocket-Client testen, ob die Reverse-Proxy-Konfiguration erfolgreich ist. Am Beispiel von JavaScript lautet der Code wie folgt: 🎜rrreee🎜Im obigen Beispiel haben wir ein WebSocket-Objekt erstellt und die zu verbindende Adresse als Adresse des Nginx-Servers angegeben. In den Rückruffunktionen onopen, onmessage und onclose können wir die Ereignisse einer erfolgreichen WebSocket-Verbindung, des Empfangs einer Nachricht und des Verbindungsabschlusses verarbeiten. 🎜🎜Durch die oben genannten Konfigurations- und Codebeispiele können wir Reverse-Proxy-WebSocket auf Nginx implementieren und die Funktion der sofortigen Kommunikation realisieren. Durch den Hochleistungs- und Lastausgleichsmechanismus von Nginx können wir stabile und zuverlässige Dienste für WebSocket-Anwendungen bereitstellen und eine große Anzahl gleichzeitiger Verbindungen verarbeiten. Da Nginx über ausgereifte Betriebs-, Wartungs- und Überwachungstools verfügt, können wir gleichzeitig problemlos eine Leistungsoptimierung und Fehlerbehebung für WebSocket-Anwendungen durchführen. 🎜🎜Zusammenfassend lässt sich sagen, dass Nginx ein hervorragender Webserver ist. Durch die Reverse-Proxy-Konfiguration können wir WebSocket problemlos unterstützen und leistungsstarke Instant-Messaging-Dienste bereitstellen. Für Webanwendungen, die Instant-Messaging-Funktionen implementieren müssen, ist die Nginx-Reverse-Proxy-Konfiguration eine Lösung, die es wert ist, erkundet und verwendet zu werden. 🎜

Das obige ist der detaillierte Inhalt vonNginx-Reverse-Proxy-WebSocket-Konfiguration für sofortige Kommunikation. 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