You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails6+Nginx+Phusion Passenger6.0.4环境Hotwire WebSocket连接失败求助

问题根因&解决方案

你遇到的问题是两个独立错误叠加导致的,按优先级修复即可:

1. 网关Nginx配置笔误(直接导致请求转发失败)

你网关层nginx.conf的/cable路径配置中,proxy_pass指向的http://active_migration上游服务并未定义,所有WebSocket请求根本没有转发到正确的应用服务器。
修复方式:
把网关nginx.conf中location /cable块的配置改为:

location /cable {
    proxy_pass http://myapp;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

修改后执行nginx -s reload重载配置生效。

2. Ruby和Rails版本不兼容(导致参数报错)

你使用的Rails 6.0.3.5版本没有适配Ruby 3.0.0的关键字参数传递规则,Action Cable底层处理WebSocket请求的方法调用会触发参数数量不匹配的报错。
修复方式二选一:

  • 方案A:将Ruby版本降级到2.7.x系列,Rails 6.0.3.5对Ruby2.7的兼容性是完整的
  • 方案B:将Rails版本升级到6.0.4以上的6.0.x最新版本,或者直接升级到6.1.x系列,高版本已经修复了Ruby3的关键字参数兼容问题

3. 可选优化(规避Passenger兼容问题)

你当前使用的Phusion Passenger 6.0.4对Ruby3的WebSocket处理也存在已知bug,建议升级到6.0.12及以上版本,避免额外的兼容问题。

所有配置调整完成后重启应用服务,清理浏览器缓存重新访问即可解决问题。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:45:03