Heim >Betrieb und Instandhaltung >Nginx >So konfigurieren Sie den Socket-Weiterleitungsport von Nginx

So konfigurieren Sie den Socket-Weiterleitungsport von Nginx

PHPz
PHPznach vorne
2023-05-24 11:37:062615Durchsuche

nginx gängige Szenarien für die Weiterleitung von Socket-Ports: Online-Lernanwendungen fügen zusätzlich zu den regulären Funktionen eine Chatroom-Funktion hinzu. Gleichzeitig wählt das Backend swoole als Dienstanbieter aus ip:port, nginx muss für die Weiterleitung verwendet werden.

Unter normalen Umständen können wir einen Socket-Link direkt auf der Benutzerseite einrichten, aber ein solcher Vorgang macht den Port offen und birgt bestimmte Sicherheitsrisiken, die den Port verbergen können. Ein weiteres Problem besteht darin, dass einige Header-Parameter während des Weiterleitungsprozesses auch zum Socket-Dienstanbieter gebracht werden müssen. Andere benötigen nur Nginx, um die Konvertierung vom regulären Protokoll zum WebSocket durchzuführen.

Dabei ist „Upgrade“ ein Hop-by-Hop-Header und kann nicht vom Client an den Proxy-Server weitergeleitet werden. Über den Weiterleitungs-Proxy kann der Client die Verbindungsmethode verwenden, um dieses Problem zu vermeiden. Dies funktioniert jedoch nicht mit Reverse-Proxys, da der Client keinen Proxyserver kennt und eine spezielle Behandlung auf dem Proxyserver erfordert. Gleichzeitig kann der Hop-by-Hop-Header mit „Upgrade“ und „Verbindung“ nicht übergeben werden, daher müssen Sie bei der Konvertierung in Websocket diese beiden Parameter mitbringen: Beispiel:

location /chat/ {
  proxy_pass http://backend;
  proxy_http_version 1.1;
  proxy_set_header upgrade $http_upgrade;
  proxy_set_header connection "upgrade";
}

Erweitert: „Verbindung“ weiterleiten Header-Feld an den Proxy-Server. Der Wert hängt vom Feldwert „Upgrade“ des Client-Anfrage-Headers ab. Zum Beispiel:

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

  server {
    ...

    location /chat/ {
      proxy_pass http://backend;
      proxy_http_version 1.1;
      proxy_set_header upgrade $http_upgrade;
      proxy_set_header connection $connection_upgrade;
    }
  }

Hinweis: http://backend im Beispiel ist eine Gruppe von Servern mit Lastausgleich, die als Proxy_Pass http://127.0.0.1:9501 geschrieben werden können Das. Darüber hinaus werden Links, die innerhalb von 60 Sekunden keine Daten liefern, standardmäßig geschlossen, was mit der Direktive „proxy_read_timeout“ erweitert werden kann. Oder der Proxyserver kann so konfiguriert werden, dass er regelmäßig Ping-Frames sendet, um das Timeout zurückzusetzen und zu prüfen, ob der Link verfügbar ist.

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

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen