때는 API 서버의 http --> https 전환 이후 였다.
1:1 실시간 채팅을 위해서 Socket.io 라이브러리를 이용해 WebSocket 서버를 열었었는데 WS 연결은 잘됐지만 WSS 연결은 되지 않았다.
프론트 서버 또한 HTTPS 설정이 되어 있었기 때문에 이 문제는 아니었다.
그래서 여느날 처럼 구글링을 하다가 ngnix에 관련된 문제라는걸 알게 됐다.
크게 어려울건 없었다. 단순히 nginx.conf 파일에 WebSocket 프로토콜 연결을 위한 핸드쉐이크 및 프록시 설정 추가를 해주면 되는 것이었다.
location /socket.io/ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass ipv4주소 # 서버의 ipv4 주소
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
WebSocket 서버에 연결하는 location에서 WebSocket 지원을 위한 헤더를 설정해주면 끝난다.