Heim Betrieb und Instandhaltung Nginx So konfigurieren Sie den Nginx-Reverse-Proxy-WebSocket

So konfigurieren Sie den Nginx-Reverse-Proxy-WebSocket

May 21, 2023 pm 12:13 PM
nginx websocket

Da das Websocket-Protokoll basierend auf dem http-Protokoll aktualisiert wird (siehe Abbildung unten), können Sie Nginx Reverse Proxy Websocket verwenden.

So konfigurieren Sie den Nginx-Reverse-Proxy-WebSocket

Websocket

Wie Sie auf diesem Bild sehen können, wird die Websocket-Verbindung basierend auf hergestellt das http-Protokoll auf Basis.

get /chat http/1.1
host: server.example.com
upgrade: websocket
connection: upgrade
sec-websocket-key: x3jjhmbdl1ezlkh9gbhxdw==
sec-websocket-protocol: chat, superchat
sec-websocket-version: 13
origin: http://example.com
Nach dem Login kopieren

Kinder, die mit http vertraut sind, haben vielleicht bemerkt, dass diese Handshake-Anfrage nur noch ein paar weitere Dinge enthält, die dem http-Protokoll ähneln.

upgrade: websocket
connection: upgrade
这个就是websocket的核心了,告诉apache、nginx等服务器:我发起的是websocket协议。
sec-websocket-key: x3jjhmbdl1ezlkh9gbhxdw==
sec-websocket-protocol: chat, superchat
sec-websocket-version: 13
Nach dem Login kopieren

Zuallererst ist sec-websocket-key ein Base64-Kodierungswert, der zufällig vom Browser generiert wird. Er sagt dem Server: Torf, täuschen Sie mich nicht, ich möchte überprüfen, ob Sie wirklich ein Websocket-Assistent sind .

Schließlich teilt sec-websocket-version dem Server den verwendeten Websocket-Entwurf (Protokollversion) mit. Zu Beginn befand sich das Websocket-Protokoll noch im Entwurfsstadium. Es gab viele seltsame Protokolle. Es ist seltsam, dass Firefox und Chrome unterschiedliche Versionen verwenden. Am Anfang gab es zu viele Websocket-Protokolle, was ein großes Problem war. . Aber jetzt ist es in Ordnung, es ist erledigt. Es ist eine Sache, die jeder nutzt. Dann gibt der Server Folgendes zurück und zeigt an, dass die Anfrage angenommen und der Websocket erfolgreich eingerichtet wurde!

http/1.1 101 switching protocols
upgrade: websocket
connection: upgrade
sec-websocket-accept: hsmrc0smlyukagmm5oppg2hagwk=
sec-websocket-protocol: chat
Nach dem Login kopieren

Dies ist der letzte Bereich, für den http verantwortlich ist. Er teilt dem Client mit, dass ich das Protokoll erfolgreich gewechselt habe. ~

upgrade: websocket
connection: upgrade
Nach dem Login kopieren

Es ist immer noch behoben und teilt dem Client mit, dass es sich bei dem bevorstehenden Upgrade um das Websocket-Protokoll handelt. Zu diesem Zeitpunkt hat http seine gesamte Arbeit abgeschlossen und der nächste Schritt besteht darin, vollständig gemäß dem Websocket-Protokoll vorzugehen.

Sobald Sie das Prinzip des Protokolls verstanden haben, können Sie mit dem nächsten Schritt fortfahren

Zuerst konfiguriert Nginx zuerst das https-Zertifikat

Das Serverzertifikat wurde vom Chef konfiguriert, daher habe ich es direkt verwendet. Überprüfen Sie es bei Bedarf selbst. 0.0

Fügen Sie die folgende Konfiguration im Knoten service der Nginx-Konfigurationsdatei hinzu Nur zufällig Ja, teilen Sie Nginx die URL mit, die als Proxy verwendet werden soll. Wenn ich auf meinen Server https://abc.com/wss zugreife, führt Nginx eine Zuordnung durch meine Anfrage an Port 8888 dieser Maschine.

proxy_pass Die URL, an die Sie einen Proxy senden möchten. Mein Proxy ist der 8888-Port dieser Maschine. service 节点中添加如下配置

location /wss
    {
         proxy_pass http://127.0.0.1:8888;
         proxy_http_version 1.1;
         proxy_set_header upgrade $http_upgrade;
         proxy_set_header connection "upgrade";
        proxy_set_header x-real-ip $remote_addr;
     }
Nach dem Login kopieren

解释一下参数

/wss 这个是随便起的,告诉nginx要代理的url,现在我的设置为 wss ,当我访问的我的服务器 https://abc.com/wss 时,nginx会把我的请求映射到本机的8888端口。

proxy_pass 要代理到的url,我的代理到本机的8888端口。

proxy_http_version 代理时使用的 http版本。

重点来了:

代理websocket的关键参数

proxy_set_header upgrade 把代理时http请求头的 upgrade 设置为原来http请求的请求头,wss协议的请求头为 websocket
proxy_set_header connection 因为代理的wss协议,所以http请求头的 connection 设置为 upgrade

proxy_set_header x-real-ip 给代理设置原http请求的ip,填写 $remote_addr 即可

至于websocket协议的response的参数,在反向代理的时候不用管。

到这里,nginx反向代理websocket的配置就完成了,重启nginx,用websocket连接试试,在原来wss地址的地方填写 wss://abc.com/wss

proxy_http_version Die beim Proxying verwendete HTTP-Version.

Hier kommt der entscheidende Punkt:

Schlüsselparameter des Proxy-Websockets

proxy_set_header upgrade Setzen Sie den upgrade des HTTP-Anforderungsheaders während des Proxys auf den Anforderungsheader von Der ursprüngliche HTTP-Anfrage-Header des WSS-Protokolls ist websocket
proxy_set_header-Verbindung Aufgrund des Proxy-WSS-Protokolls ist der HTTP-Anfrage-Header Verbindung< /code> ist auf <code >upgrade

proxy_set_header x-real-ip gesetzt. Legen Sie die IP der ursprünglichen http-Anfrage für den Proxy fest und geben Sie ein $remote_addr

Wie für Websocket Die Antwortparameter des Protokolls müssen während des Reverse-Proxys nicht gesteuert werden.

An diesem Punkt ist die Konfiguration des Nginx-Reverse-Proxy-Websockets abgeschlossen. Starten Sie Nginx neu, versuchen Sie, eine Verbindung mit dem Websocket herzustellen, und geben Sie wss://abc.com/wss anstelle des ursprünglichen wss ein Adresse. Wenn die Verbindung zum Websocket erfolgreich hergestellt wurde, bedeutet dies, dass der Nginx-Reverse-Proxy-Websocket erfolgreich war.

🎜Zusammenfassung🎜🎜🎜Die aktuelle Konfiguration ist nur die Konfiguration beim Reverse-Proxy auf dem lokalen Computer. Wenn Sie den Proxy auf andere Hosts umkehren möchten, kann es zu domänenübergreifenden Problemen kommen Nginx-Reverse-Proxy. 🎜🎜🎜Thinking🎜🎜🎜Sie können diesen Absatz in der Nginx-Konfigurationsdatei sehen🎜
location ~ .php$ {
   root html;
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   fastcgi_param script_filename $document_root$fastcgi_script_name;
   include fastcgi_params;
}
Nach dem Login kopieren
🎜Dies ist die PHP-Konfigurationsdatei in Nginx. Diese Konfigurationsliste kommt mir gerade sehr bekannt vor. . Beim Durchsuchen des Internets habe ich herausgefunden, dass Nginx bei der Verarbeitung von PHP-Typanfragen die Anfrage an den Fastcgi-Verwaltungsprozess sendet. Der Fascgi-Verwaltungsprozess wählt das Verarbeitungsergebnis des CGI-Unterprozesses aus und gibt es an Nginx zurück, und PHP-FPM ist ein PHP fastcgi-Manager. Nginx selbst kann PHP nicht verarbeiten. Wenn eine Anfrage eingeht, wird sie zur Verarbeitung an den PHP-Interpreter gesendet und das Ergebnis zurückgegeben. Wenn Nginx Anfragen vom Typ PHP verarbeitet, erfolgt die Implementierung daher im Wesentlichen über die Reverse-Proxy-Funktion. 🎜🎜Wir können unser Denken erweitern und den Nginx-Reverse-Proxy verwenden, um mehr Funktionen zu erreichen, z. B. das Proxying von Tomcat🎜
location /tomcat
    {
         proxy_pass http://127.0.0.1:8080;
         proxy_http_version 1.1;
        proxy_set_header x-real-ip $remote_addr;
     }
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie den Nginx-Reverse-Proxy-WebSocket. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So überprüfen Sie den Namen des Docker -Containers So überprüfen Sie den Namen des Docker -Containers Apr 15, 2025 pm 12:21 PM

Sie können den Namen des Docker -Containers abfragen, indem Sie den Schritten folgen: Alle Container auflisten (Docker PS). Filtern Sie die Containerliste (unter Verwendung des GREP -Befehls). Ruft den Containernamen ab (befindet sich in der Spalte "Namen").

So konfigurieren Sie den Namen des Cloud -Server -Domänennamens in Nginx So konfigurieren Sie den Namen des Cloud -Server -Domänennamens in Nginx Apr 14, 2025 pm 12:18 PM

So konfigurieren Sie einen Nginx -Domänennamen auf einem Cloud -Server: Erstellen Sie einen Datensatz, der auf die öffentliche IP -Adresse des Cloud -Servers zeigt. Fügen Sie virtuelle Hostblöcke in die NGINX -Konfigurationsdatei hinzu, wobei der Hörport, Domänenname und das Root -Verzeichnis der Website angegeben werden. Starten Sie Nginx neu, um die Änderungen anzuwenden. Greifen Sie auf die Konfiguration des Domänennamens zu. Weitere Hinweise: Installieren Sie das SSL -Zertifikat, um HTTPS zu aktivieren, sicherzustellen, dass die Firewall den Verkehr von Port 80 ermöglicht, und warten Sie, bis die DNS -Auflösung wirksam wird.

So überprüfen Sie, ob Nginx gestartet wird So überprüfen Sie, ob Nginx gestartet wird Apr 14, 2025 pm 01:03 PM

So bestätigen Sie, ob Nginx gestartet wird: 1. Verwenden Sie die Befehlszeile: SystemCTL Status Nginx (Linux/Unix), Netstat -ano | FindStr 80 (Windows); 2. Überprüfen Sie, ob Port 80 geöffnet ist; 3. Überprüfen Sie die Nginx -Startmeldung im Systemprotokoll. 4. Verwenden Sie Tools von Drittanbietern wie Nagios, Zabbix und Icinga.

So konfigurieren Sie Nginx in Windows So konfigurieren Sie Nginx in Windows Apr 14, 2025 pm 12:57 PM

Wie konfiguriere ich Nginx in Windows? Installieren Sie NGINX und erstellen Sie eine virtuelle Hostkonfiguration. Ändern Sie die Hauptkonfigurationsdatei und geben Sie die Konfiguration der virtuellen Host ein. Starten oder laden Nginx neu. Testen Sie die Konfiguration und sehen Sie sich die Website an. Aktivieren Sie selektiv SSL und konfigurieren Sie SSL -Zertifikate. Stellen Sie die Firewall selektiv fest, damit Port 80 und 443 Verkehr.

So überprüfen Sie die Nginx -Version So überprüfen Sie die Nginx -Version Apr 14, 2025 am 11:57 AM

Die Methoden, die die Nginx -Version abfragen können, sind: Verwenden Sie den Befehl nginx -v; Zeigen Sie die Versionsrichtlinie in der Datei nginx.conf an. Öffnen Sie die Nginx -Fehlerseite und sehen Sie sich den Seitentitel an.

So starten Sie den Nginx -Server So starten Sie den Nginx -Server Apr 14, 2025 pm 12:27 PM

Das Starten eines Nginx-Servers erfordert unterschiedliche Schritte gemäß verschiedenen Betriebssystemen: Linux/UNIX-System: Installieren Sie das NGINX-Paket (z. B. mit APT-Get oder Yum). Verwenden Sie SystemCTL, um einen Nginx -Dienst zu starten (z. B. sudo systemctl start nginx). Windows -System: Laden Sie Windows -Binärdateien herunter und installieren Sie sie. Starten Sie Nginx mit der ausführbaren Datei nginx.exe (z. B. nginx.exe -c conf \ nginx.conf). Unabhängig davon, welches Betriebssystem Sie verwenden, können Sie auf die Server -IP zugreifen

So starten Sie einen Container von Docker So starten Sie einen Container von Docker Apr 15, 2025 pm 12:27 PM

Startschritte des Docker -Containers: Ziehen Sie das Containerbild: Führen Sie "Docker Pull [Mirror Name]" aus. Erstellen eines Containers: Verwenden Sie "Docker erstellen [Optionen] [Spiegelname] [Befehle und Parameter]". Starten Sie den Container: Führen Sie "Docker Start [Container Name oder ID]" aus. Containerstatus überprüfen: Stellen Sie sicher, dass der Container mit "Docker PS" ausgeführt wird.

So erstellen Sie Container für Docker So erstellen Sie Container für Docker Apr 15, 2025 pm 12:18 PM

Erstellen Sie einen Container in Docker: 1. Ziehen Sie das Bild: Docker Pull [Spiegelname] 2. Erstellen Sie einen Container: Docker Ausführen [Optionen] [Spiegelname] [Befehl] 3. Starten Sie den Container: Docker Start [Containername]

See all articles