Primeiro diferencie uma falha no handshake de uma conexão que abre e fecha depois. Os dois sintomas levam a verificações diferentes.
Permita que a aplicação receba a solicitação de upgrade
Para uma rota WebSocket dedicada, coloque isto dentro de server:
location /socket/ {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
usa explicitamente HTTP/1.1 em direção ao backend. repassa a mudança de protocolo solicitada pelo cliente. informa ao backend que esta conexão solicita essa mudança. Esses cabeçalhos precisam de encaminhamento explícito porque proxies não repassam simplesmente todo cabeçalho específico de conexão.
