2016-04-23 10 views
0

私はApacheプロキシを介してアクセスするMeteorアプリケーションを持っています。アプリは動作しているようですが、Chromeのコンソールにエラーが表示されます。私は理想的なフォールバックよりも少ないものがあるので、うまくいくと思う。これは、エラーを取得します。MeteorがApache ProxyでWebSocketエラーを取得する

ddp-client failed: Error during WebSocket handshake: Unexpected response code: 400 

私はかなり広範であるように思われ、この問題への解決策をたくさん読んで(そしてかなりの数を試してみました)が、それらは多くの場合、私の非常に内のソリューションが使用できなくなる複雑に結びついていました簡単なセットアップ。簡単に言えば、Meteorを提供し、WebSocketのddp-clientエラーを回避するためにApacheプロキシをどのように設定すればよいですか?

<VirtualHost *:80> 
    ServerName my-domain.com 

    ???? 

</VirtualHost> 

答えて

0

Meteorが背後でSockJSを使ってXHR long pollingにフォールバックするため、あなたのアプリが動作しています。

あなたは、Apache 2.4.5を使用して上記されている場合のWebSocketプロキシを有効にするには、あなたがmod_proxymod_proxy_wstunnelを使用して試すことができます(あなたの流星のアプリがポート3000でリッスンすると仮定した場合):

<VirtualHost *:80> 
    ServerName my-domain.com 

    RewriteEngine On 
    RewriteCond %{QUERY_STRING} transport=websocket [NC] 
    RewriteRule /(.*)   ws://localhost:3000/$1 [P,L] 

    ProxyPass/http://localhost:3000/ 
    ProxyPassReverse/http://localhost:3000/ 
</VirtualHost> 

言及したモジュールを使用せずに、次のように試してみてください:

<VirtualHost *:80> 
    ServerName my-domain.com 

    RewriteEngine on 
    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC] 
    RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC] 
    RewriteRule /(.*) ws://localhost:3000/$1 [P,L] 
</VirtualHost> 
関連する問題