웹소켓과 Nginx 동시 사용시 문제점

2024. 2. 17. 16:56· 카테고리 없음
목차
  1. 문제가 발생했을 당시 상황
  2. Nginx사용 시 문제점 
  3. 의문점
클라이언트 단에서 SocketJS와 Stomp를 이용해 연결했으며 서버 단은 Spring으로 구성했습니다.

 

문제가 발생했을 당시 상황

아래와 같은 문제점들은 사실 로컬에서도 발생합니다. 보통 웹소켓 연결 endPoint를 잘못 매칭했거나 웹소켓 연결에 CORS설정을 해놓지 않아서 발생하기에 간단히 해결이 됐습니다.

여기서 저희 팀에서 했던 생각은 endPoint매칭 및 CORS에 대한 대처가 됐다 였습니다.
그러나 배포 환경에서 실행했을 때 Websocket connection failed와 CORS가 발생했습니다.

 

Nginx사용 시 문제점 

조금 검색해본 결과 nginx와 Websocket을 함께 사용할 시 주의해야 할 점으로 웹소켓 연결을 위해 아래의 헤더를 추가해줘야 한다는 것이었습니다.

location /ws { #웹 소켓 연결을 위한 Endpoint
  proxy_pass http://localhost:8080; #웹 소켓 서버가 있는 Origin(Spring)

  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "Upgrade";
  proxy_set_header Host $host;
}

 

의문점

분명 로컬에서 실행했을 때는 웹소켓 연결을 할 때 Client측에서 upgrade헤더를 자동으로 추가하는 것을 확인했는데 왜 위와 같이 nginx에서 다시 한번 upgrade헤더를 추가해줘야 할까요??

 

이유는 웹소켓 연결을 위해 담아줘야하는 헤더(Connection, Upgrade)들이 "Hop By Hop" 헤더이기 때문이었습니다.
단일 전송 레벨에서만 의미가 있는 헤더들이죠 즉, 이 헤더들은 메시지가 한 호스트에서 다음 호스트로 전달될 때마다 독립적으로 처리되어야 합니다.

 

  1. 문제가 발생했을 당시 상황
  2. Nginx사용 시 문제점 
  3. 의문점
Seung__Yong
Seung__Yong
Seung__Yong
기록
Seung__Yong
전체
오늘
어제
  • 분류 전체보기 (40)
    • Git (2)
    • Web (0)
    • Spring (13)
    • Java (3)
    • 영상리뷰 (0)
    • CS (0)
    • PS (0)
    • Project (7)
      • Bidderown (5)
      • WithFestival (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 커버링 인덱스
  • RefreshToken 탈취 감지
  • Intellij
  • 조회수 중복 방지
  • @Rollback
  • git rebase
  • @SpringBootTest
  • 실시간 알림
  • git rebase 유의사항
  • @Transactional
  • rebase conflict
  • intellij git conflict
  • 리베이스 충돌 해결
  • noOffset
  • WithUserDetails
  • ControllerAdvice
  • git충돌
  • 로그인 AOP적용
  • BCryptPasswordEncoer 동작원리
  • GlobalException
  • 네이버 클라우드 플랫폼
  • NCP
  • @PreAuthorize() 예외처리
  • covering index
  • SSR
  • BCrypt
  • 권한 검증
  • SpringBootTest
  • @allargsconstructor
  • SessionRegistry

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
Seung__Yong
웹소켓과 Nginx 동시 사용시 문제점
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.