❌ [문제점]
로컬에서는 Stomp 연결이 되지만, 서버에 올라가면 연결이 되지 않아 sockjs로 연결이 됨 => 연결 시에 딜레이 발생
WebSocket이 hop-by-hop 프로토콜이므로 프록시 서버가 클라이언트의 Upgrade 요청을 가로챌 때 적절한 헤더를 포함하여 WAS 서버에 업그레이드 요청을 보내야 함
proxy_set_header Upgrade $http_upgrade;
: 클라이언트의 요청 헤더에서 'Upgrade' 값을 가져와 프록시 요청 헤더에 설정. WebSocket 연결을 업그레이드하기 위해서 필요HTTP의 단기 연결과 달리 WebSocket은 오래 지속되기 때문에, 리버스 프록시는 연결을 닫지 않고 열린 상태로 유지하는 것을 허용해야 함
proxy_set_header Connection "upgrade";
: 클라이언트의 요청 헤더에서 'Connection' 값을 가져와 프록시 요청 헤더에 설정. 이는 WebSocket 연결이 지속될 수 있도록 연결을 업그레이드 하는 역할WebSocket 프로토콜은 HTTP/1.1에 도입된 Upgrade 헤더를 사용하기 때문에, 웹 소켓 및 활성 연결을 유지하려면 버전 1.1을 사용해야 함
- proxy_http_version 1.1;
location /api/chat/ {
proxy_pass {url}/api/chat/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
}