带弹性豆茎和经典负载均衡器的以太网电缆499 NGINX代码

yyyllmsg  于 4个月前  发布在  Nginx
关注(0)|答案(1)|浏览(77)

我尝试在我的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是什么)

没有真实的帮助。有什么建议让这东西在豆茎中工作吗?

7lrncoxx

7lrncoxx1#

499错误代码似乎指向一个客户端与nginx反向代理失去连接。我在reverse proxies的AWS弹性beanstalk文档中找过你。在示例配置中,我看到AWS建议添加超时。
尝试将其添加到nginx conf中:

keepalive_timeout     60;

字符串
这将保持连接打开60秒,如nginx文档中所述;
也许这也是:

client_header_timeout 60;
      client_body_timeout   60;


希望这对你有帮助。

相关问题