Heim > Backend-Entwicklung > Golang > Warum schlägt mein mod_proxy_wstunnel- und Go-websocket-Setup fehl und wie kann ich das Problem beheben?

Warum schlägt mein mod_proxy_wstunnel- und Go-websocket-Setup fehl und wie kann ich das Problem beheben?

DDD
Freigeben: 2025-01-01 06:58:10
Original
543 Leute haben es durchsucht

Why Does My mod_proxy_wstunnel and Go-websocket Setup Fail, and How Can I Fix It?

Mod_proxy_wstunnel und Go-websocket: Ein Problem und seine Lösung

In einem Versuch, Apaches mod_proxy_wstunnel mit der Go-websocket-Implementierung zu verwenden, Benutzer kann auf Hindernisse stoßen. Ein Benutzer bat um Hilfe bei der Konfiguration der erforderlichen Einstellungen.

Eine detaillierte Beschreibung des Problems wurde bereitgestellt: Während der Reverse-Proxy erfolgreich hergestellt wurde, konnte die Websocket-Verbindung nicht hergestellt werden. Die Konfiguration des Benutzers spiegelte Folgendes wider:

<VirtualHost *:80>
    DocumentRoot /var/www/foobar
    ServerName foobar.com
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
    ProxyPass /ws/ ws://localhost:8080/ws/
    ProxyPassReverse /ws/ ws://localhost:8080/ws/
    ErrorLog logs/error_log-foobar
    CustomLog logs/access_log-foobar common
    LogLevel debug
</VirtualHost>
Nach dem Login kopieren

Anfangs erhielt der Benutzer die Antwort „403 Verboten“, was auf ein Problem bei der Ursprungsprüfung hindeutete. Nach dem Deaktivieren der Ursprungsprüfung änderte sich der Fehler zu „400 Bad Request“, was darauf hinweist, dass der Server die Upgrade-Anfrage nicht erhalten hat.

Nachdem der Benutzer Empfehlungen aus zahlreichen Quellen gesammelt hatte, gelangte er zu einer Lösung:

  1. Nachgestellter Schrägstrich: Wie Aralo betonte, wird dem WebSocket-Pfad ein nachgestellter Schrägstrich hinzugefügt ("/ws/") war entscheidend. Apache scheint eine gültige GET-Anfrage für die WebSocket-Verarbeitung zu erfordern.
  2. ProxyPass-Reihenfolge: James Henstridge hat richtig bemerkt, dass die Reihenfolge der ProxyPass-Anweisungen wichtig ist. Der ProxyPass für „/ws/“ sollte vor dem allgemeinen „/“ stehen.
  3. Entfernung der Ursprungsprüfung: Der go-websocket-Beispielcode enthielt eine Ursprungsprüfung in der Funktion ServeWs(), die wurde entfernt.

Durch die Implementierung dieser Änderungen wurde das Problem behoben und der Benutzer konnte die Websocket-Verbindung hinter Apache erfolgreich herstellen mod_proxy_wstunnel.

Das obige ist der detaillierte Inhalt vonWarum schlägt mein mod_proxy_wstunnel- und Go-websocket-Setup fehl und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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