我正在尝试在运行Nginx和Puma的Elastic Beanstalk上部署ActionCable的Rails 5.0应用程序。
在.ebextensions/nginx.config
我有以下内容:
location /cable {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade websocket;
proxy_set_header Connection upgrade;
}
并在config/environments/production.rb
config.action_cable.allowed_request_origins = [ 'http://####.####.com', /http:\/\/####.*/ ]
将应用程序部署到Elastic Beanstalk环境后,我最终在Chrome控制台中出现此错误:
与'ws://####.#####cable'的WebSocket连接失败:在建立连接之前WebSocket已关闭。
我已尝试遵循this thread中的建议,但最终却收到此错误:
与'ws://####.#####cable'的WebSocket连接失败:WebSocket握手期间出错:意外响应代码:404
这就是我的.ebextensions/nginx.config
文件当前的样子。
非常感谢任何帮助。
答案 0 :(得分:1)
原来在Elastic Load Balancer中连接被杀死了。 ELB Listeners设置为HTTP,需要为TCP。