[WebSocket] Nginx 설정

ss0510s·2024년 5월 23일
0

WebSocket

목록 보기
5/5

Nginx

❌ [문제점]
로컬에서는 Stomp 연결이 되지만, 서버에 올라가면 연결이 되지 않아 sockjs로 연결이 됨 => 연결 시에 딜레이 발생

  • nginx conf 파일에 해당 내용 추가
    • 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;
      	}
profile
개발자가 되기 위해 성장하는 중입니다.

0개의 댓글