Rails 5 Action Cable 部署与 Nginx、Puma 和 Redis
Rails 5 Action Cable deployment with Nginx, Puma & Redis
我正在尝试使用 Capistrano 将启用 Action Cable 的应用程序部署到 VPS。我正在使用 Puma、Nginx 和 Redis(用于电缆)。经过几个障碍后,我能够让它在本地开发环境中工作。我正在使用默认的进程内/cable URL。但是,当我尝试将它部署到 VPS 时,我不断在 JS 日志中收到这两个错误:
Establishing connection to host ws://{server-ip}/cable failed.
Connection to host ws://{server-ip}/cable was interrupted while loading the page.
在我的特定应用 nginx.error.log
中,我收到了这些消息:
2016/03/10 16:40:34 [info] 14473#0: *22 client 90.27.197.34 closed keepalive connection
在 JS 提示符中打开 ActionCable.startDebugging()
没有任何意义。只是 ConnectionMonitor 试图无限期地重新打开连接。我的网络监视器中也收到 301: Moved permanently -requests for /cable 的负载。
我尝试过的事情:
- 使用
async
适配器代替 Redis。 (这是开发环境中使用的)
将这样的东西添加到我的 /etc/nginx/sites-enabled/{app-name}
:
location /cable/ {
proxy_pass http://puma;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
将 Rails.application.config.action_cable.allowed_request_origins
设置为正确的主机(已尝试 "http://{server-ip}" 和 "ws://{server-ip}")
- 开启
Rails.application.config.action_cable.disable_request_forgery_protection
运气不好。是什么导致了这个问题?
$ rails -v
Rails 5.0.0.beta3
请告知我可能有用的任何其他详细信息。
我终于成功了!我已经尝试了大约一个星期的各种事情...
301 重定向是由 nginx 实际尝试将浏览器重定向到 /cable/ 而不是 /cable 引起的。这是因为我在 location
节中指定了 /cable/ 而不是 /cable!我的想法来自 this answer。
我正在尝试使用 Capistrano 将启用 Action Cable 的应用程序部署到 VPS。我正在使用 Puma、Nginx 和 Redis(用于电缆)。经过几个障碍后,我能够让它在本地开发环境中工作。我正在使用默认的进程内/cable URL。但是,当我尝试将它部署到 VPS 时,我不断在 JS 日志中收到这两个错误:
Establishing connection to host ws://{server-ip}/cable failed.
Connection to host ws://{server-ip}/cable was interrupted while loading the page.
在我的特定应用 nginx.error.log
中,我收到了这些消息:
2016/03/10 16:40:34 [info] 14473#0: *22 client 90.27.197.34 closed keepalive connection
在 JS 提示符中打开 ActionCable.startDebugging()
没有任何意义。只是 ConnectionMonitor 试图无限期地重新打开连接。我的网络监视器中也收到 301: Moved permanently -requests for /cable 的负载。
我尝试过的事情:
- 使用
async
适配器代替 Redis。 (这是开发环境中使用的) 将这样的东西添加到我的
/etc/nginx/sites-enabled/{app-name}
:location /cable/ { proxy_pass http://puma; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; }
将
Rails.application.config.action_cable.allowed_request_origins
设置为正确的主机(已尝试 "http://{server-ip}" 和 "ws://{server-ip}")- 开启
Rails.application.config.action_cable.disable_request_forgery_protection
运气不好。是什么导致了这个问题?
$ rails -v
Rails 5.0.0.beta3
请告知我可能有用的任何其他详细信息。
我终于成功了!我已经尝试了大约一个星期的各种事情...
301 重定向是由 nginx 实际尝试将浏览器重定向到 /cable/ 而不是 /cable 引起的。这是因为我在 location
节中指定了 /cable/ 而不是 /cable!我的想法来自 this answer。