

**実現したいこと**  
本番環境で動かないチャットアプリを動作するよう設定したい  
改善するために必要な要素を特定したい

**実行環境**  
Rails 5.2.4.2  
nginx 1.12.2  
unicorn 5.4.1  
AmazonLinux2

**エラー**  
デベロッパーツールのコンソール

[code]

    WebSocket connection to 'wss://ドメイン/cable' failed: Error during WebSocket handshake: Unexpected response code: 404
    
[/code]

log/production.log

[code]

    Failed to upgrade to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: close, HTTP_UPGRADE: )
    
[/code]

現在試したこと  
config/environments/prodution.rbの

１．`config.action_cable.allowed_request_origin = [ 'http://example.com',
/http:\/\/example.*/ ]`を有効にしドメインを設定

**ご教示頂きたい点**  
他に必要な要素を教えていただきたい

必要となりそうな要素を一通り検索した結果下記の３点が目にとまりましたが、使用しているものもあれば使用していないものもあり取捨選択が困難でした

・AWSのELB設定 （HTTP/HTTPSでのWebSockets通信はサポートしていない?)  
・/etc/nginx/conf.d/*.conf で cable を設定  
・redisの設定

ご教示頂けますと幸いです。よろしくお願いいたします。


CC BY-SA 4.0
2020-07-08T00:19:37.313
68392
2020-07-29T04:57:00.263
2020-07-08T00:40:33.217
3060
40969
question
javascript ruby-on-rails ruby nginx
ローカルで動くチャット機能が本番環境で動作しない


<https://teratail.com/questions/231471>

上記の内容をもとに自己解決できました。

・「config/environments/prodution.rbファイルでドメインを有効化」以外に行ったこと

nginx ***.conf に下記のコードを追加しました。

[code]

    location /cable {
                proxy_pass http://アプリケーションサーバー/cable;
                proxy_http_version 1.1;
                proxy_set_header Upgrade websocket;
                proxy_set_header Connection Upgrade;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    
[/code]


CC BY-SA 4.0
2020-07-29T04:08:55.217
69085
2020-07-29T04:57:00.263
2020-07-29T04:57:00.263
3060
40969
68392
answer