当前位置:  开发笔记 > 编程语言 > 正文

用于Rails的NGINX配置5带有puma的ActionCable

如何解决《用于Rails的NGINX配置5带有puma的ActionCable》经验,为你挑选了1个好方法。

我正在将Jelastic用于我的开发环境(尚未投入生产).我的应用程序与Unicorn一起运行,但我发现带有ActionCable的websockets并将其集成到我的应用程序中.

一切都在本地工作正常,但在部署到我的Jelastic环境(使用默认的NGINX/Unicorn配置)时,我在我的javascript控制台中收到此消息,我在访问日志中看不到任何内容

WebSocket connection to 'ws://dev.myapp.com:8080/' failed: WebSocket is closed before the connection is established.

我曾经在我的本地环境中通过在配置文件中添加所需的ActionCable.server.config.allowed_request_origins来解决它.所以我仔细检查了我的开发配置,这没关系.

这就是为什么我想知道NGINX配置是否有特定的东西,除了在ActionCable git页面上解释的内容

bundle exec puma -p 28080 cable/config.ru

对于我的应用程序,我在这里输入链接描述,但没有提及任何有关NGINX配置的内容

我知道带有ActionCable的websocket很新,但我希望有人能够在这方面给我一个带头

非常感谢



1> phyzalis..:

好的,所以我终于设法解决了我的问题.以下是允许这项工作的不同步骤:

1.nginx:我真的不知道是否需要这个,但是当我的应用程序与Unicorn一起运行时,我将其添加到我的nginx conf中

upstream websocket {
  server 127.0.0.1:28080;
}

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

然后在我的config/environments/development.rb文件中:

config.action_cable.url = "ws://my.app.com/cable/"

2.Allowed request origin:我注意到即使我ActionCable.server.config.allowed_request_origins在我的config/environments/development.rb文件中使用我的连接也被拒绝了.我想知道这是不是由于开发默认为http:// localhost:3000,如文档中所述.所以我添加了这个:

ActionCable.server.config.disable_request_forgery_protection = true

我还没有生产环境,所以我还无法测试它是怎样的.

3.Redis密码:如文档中所述,我使用的是config/redis/cable.yml但是我遇到了这个错误:

Error raised inside the event loop: Replies out of sync: #
/var/www/webroot/ROOT/public/shared/bundle/ruby/2.2.0/gems/em-hiredis-0.3.0/lib/em-hiredis/base_client.rb:130:in `block in connect'

所以我理解我为redis服务器设置密码的方式并不好.

事实上你必须做这样的事情:

development:
  <<: *local
  :url: redis://user:password@my.redis.com:6379
  :host: my.redis.com
  :port: 6379

现在一切正常,Actioncable真的令人印象深刻.

也许我的一些问题是微不足道的,但我正在分享它们以及我如何解决它们以便每个人都可以根据需要选择一些东西

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有