문제 상황
개발 환경에서는 아무런 문제 없이 잘 되던 채팅이
운영 서버에서는 안 되는 문제가 발생했다.
서버의 로그를 확인해보니 아래의 오류가 발생했다.

원인 가정과 문제해결
1. 요청에 Upgrade 헤더 미포함
우선 에러 메시지를 보고 가장 먼저 클라이언트의 요청에서
Upgrade헤더가 미포함되었는지 확인했다.
하지만 실제로 확인해보니 stomp.js를 사용하고 있어 자동으로 포함되어 있다는 것을 알 수 있었다.
2. ELB 설정 문제로 웹소켓 헤더 유실
ELB(Elastic Load Balancer)에서 지연 시간 설정을 짧게 설정할 경우
요청이 유실될 수 있다. 하지만 확인해보니 운영 서버는 ELB를 사용하고 있지 않았다.
따라서 이것도 문제의 원인이 아니었다.
3. EC2 Nginx 설정 문제로 웹소켓 헤더 유실
운영서버에서는 Nginx로 리버스 프록시 기능을 사용하고 있었다.
이때 클라이언트에서 정상적으로 Upgrade header를 설정해서 보내도
Nginx에서 헤더 설정을 하지 않으면 클라이언트에서 보낸 헤더가 유실될 수 있다.
확인해 보니 EC2에 Nginx설정에 Upgrade 헤더 설정이 누락되어 있었다.
오른쪽과 같이 Upgrade헤더 설정을 포함하여 오류를 해결했다.
'Project' 카테고리의 다른 글
Redis를 이용하여 최근 조회수 기반 인기공연 제공하기 (0) | 2025.02.27 |
---|---|
Quartz 스케줄러 이용하여 경매 마감 관리하기 (0) | 2025.01.10 |
Embeddis Redis 적용하기(feat. M1) (0) | 2024.11.05 |