Я пытаюсь настроить веб-порты на моем приложении для рельсов. Мое приложение работает с клиентом iOS, который использует библиотеку SocketRocker.Websockets с основным приложением (nginx + пассажир + фей)
Как websockets backend я использую faye-rails драгоценный камень. Он интегрирован в рельсы приложения в качестве стойки промежуточного
config.middleware.delete Rack::Lock
config.middleware.use FayeRails::Middleware, mount: '/ws', server: 'passenger', engine: {type: Faye::Redis, uri: redis_uri}, :timeout => 25 do
map default: :block
end
Он отлично работает, пока я не загрузить его на сервер производства с Nginx. Я пробовал много решений, чтобы передать запрос websocket на бэкэнд, но не повезло. Главное, что есть два сервера, но у меня есть только один. Моя идея заключалась в том, что мне просто нужно было проксифицировать запросы с/faye endpoint в/ws (для обновления заголовков). Какие правильные параметры proxy_pass должны быть в моем случае?
location /faye {
proxy_pass http://$server_name/ws;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
Любая удача, решающая это? В настоящее время у меня аналогичная проблема. –
Я прекратил использование промежуточного программного обеспечения и запускал сервер сокетов отдельно. – NeverBe
Точно, что я собираюсь делать, я думаю, это будет так. Спасибо! –