2016-09-02 7 views
2

レール5、NginxとPumaでサーバーを構成しようとしています。アプリケーションは正常に実行されているが、Actioncableを与えている以下Actioncable NginxとPuma WebSocketハンドシェイク:予期しない応答

WebSocket connection to 'ws://server_name.com/cable' failed: 
Error during WebSocket handshake: Unexpected response code: 200 

は私のnginxの設定がproduction.rbで、レールに

upstream app { 
    server unix:/tmp/app.sock fail_timeout=0; 
} 

server { 
    listen  80; 
    server_name server_name.com; 
    try_files $uri/index.html $uri @app; 
    client_max_body_size 100M; 
    location @app { 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_pass http://app; 
     client_max_body_size 10M; 
    } 

    location /cable { 
     proxy_pass http://app/; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "Upgrade"; 
    } 

    location ~ ^/(assets|uploads)/ { 
     root assets_path; 
     gzip_static on; 
     expires max; 
     add_header Cache-Control public; 
     add_header ETag ""; 
     break; 
    } 
    error_page 500 502 503 504 /500.html; 
} 

あり、私は以下のような設定をしました。

config.action_cable.url = 'ws://server_name.com/cable' 

助けてください。

+0

「ws:// server_name.com/cable/websocket」を使用してください。 – Magnuss

+0

これはうまく動作しません。 –

+0

あなたはこれに対する解決策を見つけましたか?私もこれにこだわりました。 –

答えて

0

は、使用して

location /cable { 
    proxy_pass http://app; # not http://app/; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "Upgrade"; 
} 

を試してみても、あなたが追加するSSL

1

試していない場合は、あなたのproduction.rbでconfig.action_cable.allowed_request_origins = [/http:\/\/*/, /https:\/\/*/]を持っていることを確認してください:へ

config.action_cable.allowed_request_origins = ['*'] 
config.action_cable.disable_request_forgery_protection = true 

をあなたのconfig/environments/production.rbファイル

それは私と一緒に働く、あなたが確認することができますthis linkもあります。 and this question

関連する問題