【问题标题】:Failed to upgrade to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: , HTTP_UPGRADE: )无法升级到 WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: , HTTP_UPGRADE: )
【发布时间】:2020-07-13 17:46:28
【问题描述】:

我有一个带有 nginx 和乘客的 Rails 应用程序,我已经按照说明 here 但不断升级到 WebSocket 失败(REQUEST_METHOD: GET, HTTP_CONNECTION: , HTTP_UPGRADE: )

我按照文档的建议添加了下面的块

location /cable {
    passenger_app_group_name app_name_action_cable;
    passenger_force_max_concurrent_requests_per_process 0;
}

但错误仍然存​​在,而且我已经在 stackover flow 上尝试了所有解决方案,但没有任何帮助?

  redis: &redis
  adapter: redis
  url: redis://localhost:6379/1

  development: *redis

  test: *redis

  production:
   adapter: redis
   url: <%= Rails.application.credentials[Rails.env.to_sym][:redis_url] %>

【问题讨论】:

  • 您使用什么作为适配器(例如,Redis 或 Postgres)?您可以将您的config/cable.yml 添加到您的问题中吗?
  • 我正在使用 Redis
  • 使用 cable.yml 文件更新问题

标签: ruby-on-rails nginx passenger actioncable passenger-nginx


【解决方案1】:

您的 nginx 配置中可能需要一些配置吗?我并没有真正与乘客合作,但在我的项目中,我使用它:

  upstream socket_server {
    server <your_ip>:<your_port>;
  }

  location /cable {
     proxy_pass http://socket_server;
     proxy_http_version 1.1;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection "upgrade";
  }

我使用anycable gem 和golang 套接字服务器,它可能与passenger 和默认actioncable 有所不同,但我的回答可能有助于解决您的问题

(另外,我强烈建议继续anycable,因为它消耗的服务器资源最少:))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-09
    • 2016-11-07
    • 2017-02-25
    • 1970-01-01
    • 2017-01-19
    • 2018-10-25
    • 2017-10-18
    • 1970-01-01
    相关资源
    最近更新 更多