我尝试在我的Rails 7.0.4应用程序中使用WebSocket Cable和Turbo Stream,其中到/cable的WebSocket连接在生产环境中意外关闭。
Ruby 3.0.5
64位Amazon Linux 2/3.6.3
使用Turbo Streams和OpenAI实现此聊天
https://gist.github.com/alexrudall/cb5ee1e109353ef358adb4e66631799d
这个问题不会发生在开发中,一切都很完美。
Redis电缆配置
production:
adapter: redis
url: <%= "redis://#{ENV.fetch('REDIS_HOST', 'localhost')}:6379/1"%>
channel_prefix: fist_bump_production
字符串
REDIS_HOST是AWS Elasticache服务端点,并已测试该端点适用于Sidekiq。
首先,我在生产中遇到了/cable的404问题,但后来我将其添加到配置中。
location /cable {
proxy_pass http://my_app;
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;
}
型
没有更多的404,但后来我开始得到一个499,需要刷新页面才能看到更新。
我在控制台也看到了这一点。
x1c 0d1x的数据
已经在配置中尝试过允许所有的URL。
config.action_cable.allowed_request_origins = [ %r{http://*}, %r{https://*} ]
型
- 我增加了经典负载均衡器的粘性。
- 将80和443上的侦听器更改为TCP。
- 阅读大约3页的谷歌结果。
- 我试图从AWS“Maven”那里获得帮助(我不得不解释Rails是什么)
没有真实的帮助。有什么建议让这东西在豆茎中工作吗?
1条答案
按热度按时间7lrncoxx1#
499错误代码似乎指向一个客户端与nginx反向代理失去连接。我在reverse proxies的AWS弹性beanstalk文档中找过你。在示例配置中,我看到AWS建议添加超时。
尝试将其添加到nginx conf中:
字符串
这将保持连接打开60秒,如nginx文档中所述;
也许这也是:
型
希望这对你有帮助。