2016-08-08 8 views
2

私は検索しましたが、websocketをwss://に接続できませんでした。 wss://domain.com:9090をプロキシする方法があります。 //domain.com:9090サーバーがWSへ/のWebSocketで終わったApacheの設定で、このコードは、任意のアドレスからのリクエストを送信しますProxy ws:// ws:// apache

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

を実行しているApacheは、それにプロキシを適用し、どこで、通常のWSに要求をリダイレクトします。 //domain.com:9090 例:WS:// WebSocketのは、WSになります://domain.com:9090私はWSSのためにそれをやりたい

://も の元WSS:// WebSocketを行う必要がありWSへのポイント://domain.com:9090

それは仕事をdosntと私は、ブラウザのコンソールにこのエラーが表示されます。

failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED 

はここに間違いはありますか?ありがとう、

答えて

5

私はこれを見つけるために24時間働いて、多くのフォーラムを検索しましたが、成功については誰も書きません。ここ は私のサーバーの構成です:

CentOSの6.7をリリースは、Apache 4.2.18ここ

は私が最終的にやったことです: は、最初のiは、モジュール/ mod_proxy_wstunnel.soは、Apacheの設定で使用可能にしなければならないことがわかりました私のapacheはそのモジュールを持っていませんでした。多くの検索の後、私はそのモジュールがapache 2.4.5以降で利用可能であることがわかりました。

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

私は、端末からこれらのcommondsで再度コンパイルでき\モジュール\プロキシの\ mod_proxy_wstunnel.c https://archive.apache.org/dist/httpd/httpd-2.4.18.tar.gz 抽出のhttpd-2.4.18をダウンロードして自分のサーバーのルート にアップロード:

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

PXSコマンドモジュールをコンパイルしなかったし、それ

をロードするようにApacheの設定ファイルに書きましたその後
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so 

私は、Apacheの設定ファイルの最後に以下の行を追加:

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

AND NOW:それは働きます!あなたはWSを設定することができますjsのクライアント側の は、このようなURL:

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

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

var ws = new WebSocket(wsUri); 

、それはWSに要求を転送します://mysite.com:8091 HTTPSまたはHTTPでロードされたページを重要でdoesntの、それはすべて指示しますリクエストが/ mywsでws://mysite.com:8091に返されました。

+0

私は、wssリクエストをキャッチするようにプロキシを設定しようとしています。 私はあなたがしたことを本当に理解していません。 私はすでにmod_proxyとmod_proxy_tunnelを有効にしています(私はapache2 2.4.10です)。今私は私のapache設定を変更する必要があります(私は.htaccessで試しました)。それは動作しません、私は500内部サーバーのエラーがあります。そして私は本当に回線を理解していない:ProxyPass/myws ws://mysite.com:8091 ProxyPassReverse/myws ws://mysite.com:8091 あなたのために、mysite.comとは何ですか? websocket serveurのアドレス? – Sphinx117