小编Tob*_*pen的帖子

Thin + Nginx + Websockets配置| 轨道

我有一个带有websocket-rails gem的Ruby on Rails 3.2应用程序,在nginx反向代理后面的瘦web服务器中运行.

除了nginx反向代理,一切正常.通过删除nginx反向代理,websocket通信工作正常.(开发和生产).使用nginx作为websockets的反向代理是问题的起点.

Nginx 1.3.13及更高版本应该能够支持websocket代理.根据这里这里的文档,我创建了以下nginx配置:

map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

upstream ravecy {
  server localhost:3000;
  server localhost:3001;
}

server {
  listen 80;
  server_name test.ravecy.com;

  root /var/www/ravecy.com/public;

  location / {
    try_files $uri @ravecy;
  }

  location @ravecy {
    proxy_pass http://ravecy;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_redirect off;
  }
}
Run Code Online (Sandbox Code Playgroud)

然而,遗憾的是,这不起作用.我不知道为什么,但在我看来,nginx并没有处理我的websocket连接尝试作为websocket连接而是常规HTTP连接,如日志所示:

==> production.log <==
Started GET "/chat" …
Run Code Online (Sandbox Code Playgroud)

reverse-proxy ruby-on-rails nginx thin websocket

7
推荐指数
1
解决办法
2762
查看次数

标签 统计

nginx ×1

reverse-proxy ×1

ruby-on-rails ×1

thin ×1

websocket ×1