2016-08-08 48 views
2

ich suchte viel, aber ich konnte meinen websocket nicht mit wss verbinden: //, ich fand, dass es einen Weg gibt, wss: //domain.com: 9090 und apache den Proxy auf sie anzuwenden und umleiten Anfrage an, wo die normalen ws: //domain.com: 9090 ServerProxy websocket wss: // zu ws: // apache

ProxyPass /websocket ws://domain.com:9090 
ProxyPassReverse /websocket ws://domain.com:9090 

dieser Code in apache-Konfiguration ausgeführt wird Anforderung von einer beliebigen Adresse senden mit/websocket zu ws beendet: //domain.com:9090 ex: ws: // websocket wird ws sein: //domain.com: 9090

ich es für WSS tun wollen: // auch ex WSS: // websocket muss Punkt ws: //domain.com: 9090

es dosnt Arbeit und ich bekomme diesen Fehler in Browser-Konsole:

failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED 

gibt es irgendeinen Fehler hier? danke dir.

Antwort

5

Ich arbeitete 24 Stunden für dieses finden und suchte viele Forum, aber niemand schreibt über Erfolg. hier ist meine Server-Konfiguration:

CentOS 6.7 Release, Apache 4.2.18

hier ist das, was ich tat schließlich: erste fand ich, dass modules/mod_proxy_wstunnel.so in Apache-Konfiguration aktivieren muss Datei, aber mein Apache hatte dieses Modul nicht und nach vielen Suchen fand ich, dass Modul in Apache 2.4.5 und später verfügbar ist.

https://httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.html

i heruntergeladen https://archive.apache.org/dist/httpd/httpd-2.4.18.tar.gz extrahierte httpd-2.4.18 \ Module \ Proxy \ mod_proxy_wstunnel.c und dann von Terminal zu meinem Server root hochgeladen könnte es kompiliert wieder mit diesem commonds:

chmod 755 mod_proxy_wstunnel.C#set permission 
pxs -i -a -c mod_proxy_tunnel.C#compile module 

pxs Befehl hat das Modul und schrieb in apache-Konfigurationsdatei kompilieren

zu laden
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so 

Danach habe ich hinzugefügt, diese Zeilen von Apache-Konfigurationsdatei zu beenden:

RewriteEngine on 
ProxyRequests Off 
ProxyPreserveHost on 
ProxyPass /myws ws://mysite.com:8091 
ProxyPassReverse /myws ws://mysite.com:8091 

UND JETZT: es funktioniert! in Client-Seite js Sie ws URL wie folgt einstellen:

var protocol = 'ws://'; 
if (window.location.protocol === 'https:') { 
      protocol = 'wss://'; 
    } 

var wsUri =protocol+ "mysite.com/myws"; 

var ws = new WebSocket(wsUri); 

und es wird Anfrage an ws weiter: //mysite.com: 8091 die Seite mit https oder http geladen spielt keine Rolle, es wird alles richten Anfrage endete mit/myws zu ws: //mysite.com: 8091

+0

Ich versuche, einen Proxy zu konfigurieren, um WSS-Anfragen zu fangen und umleiten es werfen ws zu meinem Server für Dev Environment Bedürfnisse. Ich verstehe nicht wirklich, was Sie getan haben. Ich habe bereits mod_proxy und mod_proxy_tunnel aktiviert (ich bin auf apache2 2.4.10). Jetzt muss ich meine Apache-Konfiguration ändern (ich versuchte es in .htaccess). Es funktioniert nicht, ich habe einen 500 internen Serverfehler.Und ich verstehe die Zeilen nicht wirklich: ProxyPass/myws ws: //mysite.com: 8091 ProxyPassReverse/myws ws: //mysite.com: 8091 Für Sie, was ist mysite.com? die Adresse der Websocket serveur? – Sphinx117