Primero distinga un handshake fallido de una conexión que se abre y se cierra más tarde. Los dos síntomas requieren comprobaciones distintas.
Permita que la aplicación reciba la solicitud de upgrade
Para una ruta WebSocket dedicada, coloque esto 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 explícitamente HTTP/1.1 hacia el backend. transmite el cambio de protocolo solicitado por el cliente. indica al backend que esta conexión solicita ese cambio. Estas cabeceras requieren reenvío explícito porque los proxys no pasan sin más todas las cabeceras específicas de la conexión.
