Я пытаюсь подключиться к веб-сокету ActionCable, и все работает нормально, работая локально только с Puma и без nginx.
Однако, когда я пытаюсь сделать то же самое в моей промежуточной среде, соединениенемедленно закрывается после подключения.Я могу получить нисходящие приветственные сообщения и, возможно, пинг.
Однако соединение внезапно закрывается без каких-либо обратных вызовов onClose, поэтому я предполагаю, что nginx не позволяет соединению сохраняться.
Вот конфигурация nginx моих сайтов.
upstream app {
# Path to Puma SOCK file, as defined previously
server unix:/home/deploy/my-app/shared/tmp/sockets/puma.sock fail_timeout=60;
keepalive 60;
}
server {
listen 80;
server_name localhost;
# websocket_pass websocket;
root /home/deploy/my-app/current/public;
try_files $uri/index.html $uri @app;
location @app {
proxy_pass http://app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
#location / {
# proxy_set_header X-Forwarded-Proto $scheme;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header Host $host;
# proxy_redirect off;
# proxy_http_version 1.1;
# proxy_set_header Connection '';
# proxy_pass http://app;
#}
location ~ ^/(assets|fonts|system)/|favicon.ico|robots.txt {
gzip_static on;
expires max;
add_header Cache-Control public;
}
location /cable {
proxy_pass http://app;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}
Я также обнаружил эту ошибку в журналах ошибок nginx:
2019/02/11 21:08:35 [ошибка] 10233 # 10233: * 2 recv () не удалось (104: сброс соединения по одноранговому узлу) при проксировании обновленного соединения, клиент: xxxx, сервер: localhost, запрос: «GET / cable / HTTP / 1.1», upstream: «http://unix:/home/deploy/wr-api/shared/tmp/sockets/puma.sock:/cable/", хост: "xxxx"