NGINX configuration for Rails 5 ActionCable with puma

前端 未结 1 1138
孤城傲影
孤城傲影 2020-12-30 06:47

I am using Jelastic for my development environment (not yet in production). My application is running with Unicorn but I discovered websockets with ActionCable and integrate

相关标签:
1条回答
  • 2020-12-30 06:59

    Ok so I finally managed to fix my issue. Here are the different steps which allowed to make this work:

    1.nginx : I don't really know if this is needed but as my application is running with Unicorn, I added this into my 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";
      }
    }
    

    And then in my config/environments/development.rb file:

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

    2.Allowed request origin: I have then noticed that my connection was refused even if I was using ActionCable.server.config.allowed_request_origins in my config/environments/development.rb file. I am wondering if this is not due to the development default as http://localhost:3000 as stated in the documentation. So I have added this:

    ActionCable.server.config.disable_request_forgery_protection = true
    

    I have not yet a production environment so I am not yet able to test how it will be.

    3.Redis password: as stated in the documentation, I was using a config/redis/cable.yml but I was having this error:

    Error raised inside the event loop: Replies out of sync: #<RuntimeError: ERR operation not permitted>
    /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'
    

    So I understood the way I was setting my password for my redis server was not good.

    In fact your have to do something like this:

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

    And now everything is working fine and Actioncable is really impressive.

    Maybe some of my issues were trivial but I am sharing them and how I resolved them so everyone can pick something if needed

    0 讨论(0)
提交回复
热议问题