WebSocket 프록시는 기본 동작이 아니야
대부분의 HTTP/1.1 역방향 프록시는 기본적으로 Upgrade 헤더를 전달하지 않아. 그래서 WebSocket 핸드셰이크가 백엔드에 닿기도 전에 프록시에서 400 으로 실패해. 명시적으로 켜야 하고, 켠 뒤에는 유휴 시간 제한도 늘려 오래 유지되는 연결이 세션 중간에 끊기지 않게 해야 해.
Nginx 와 Caddy
Nginx 에서는 proxy_set_header Upgrade $http_upgrade 와 Connection $connection_upgrade 를 명시해야 해. Caddy 는 WebSocket 을 알아보고 자동으로 전달하므로 특별한 설정이 없어. 빠른 개념 검증에서는 Caddy 가 쓰기 편하고, Nginx 가 운영 기본값처럼 쓰이는 건 기능 차이보다 익숙함 때문이야.