Здравствуйте.
Пытаюсь настроить проксирование websocket'ов через Nginx. Делаю так, как написано в официальной документации:
location /faye {
proxy_pass http://127.0.0.1:9292;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
Соединение создается. В хроме в разделе вебсокетов видно:
Status 101.
Switching protocols
Однако сообщения с сервера по этому каналу не приходят. В nginx.error.log есть вот такая ошибка:
2015/05/29 13:46:38 [info] 27188#0: *32 client closed keepalive connection
Что я делаю не так?
Полный конфиг:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream faye_backend {
server 127.0.0.1:9292;
}
server {
listen 80 default_server deferred;
listen [::]:80 default_server ipv6only=on;
access_log /home/deploy/agrofor/current/log/nginx.access.log;
error_log /home/deploy/agrofor/current/log/nginx.error.log info;
server_name mydomain.com;
passenger_enabled on;
rails_env production;
root /home/deploy/agrofor/current/public;
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}
location /faye {
proxy_pass http://faye_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}