top of page
검색

Nginx 리버스 프록시 환경에서 WSS 연결 시 SSL 프로토콜 에러 해결하기

  • sanghoroh
  • 4월 3일
  • 1분 분량

오늘은 Nginx 리버스 프록시 환경에서 WSS(WebSocket Secure) 연결 시 발생하는 SSL 프로토콜 에러에 대한 해결 방법을 공유하고자 합니다.

문제 상황

다음과 같은 구조에서 WSS 연결을 시도할 때 SSL 프로토콜 에러가 발생합니다.

  • server.js: HTTP (8080) 서버 실행

  • Nginx: HTTPS (443) 요청을 HTTP (8080)으로 프록시

이 구조는 브라우저 또는 Twilio와 같은 클라이언트가 WSS로 연결을 시도할 때 SSL 프로토콜 에러를 발생시킵니다.

원인 분석

이 문제는 Nginx가 HTTPS 요청을 받아 HTTP로 프록시하면서 발생합니다. WSS는 SSL/TLS 프로토콜을 사용하여 암호화된 통신을 수행하지만, Nginx가 HTTP로 프록시하면서 암호화된 연결이 해제되기 때문에 클라이언트와 서버 간의 SSL 프로토콜 불일치가 발생합니다.

해결 방법

이 문제를 해결하기 위해서는 Nginx에서 WSS 요청을 올바르게 프록시하도록 설정을 변경해야 합니다. 다음은 Nginx 설정 파일의 예시입니다.

Nginx

server {
    listen 443 ssl;
    server_name yourdomain.com;

    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;

    location / {
        proxy_pass http://localhost:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

주요 설정 항목

  • proxy_http_version 1.1;: HTTP 1.1을 사용하여 WebSocket 연결을 지원합니다.

  • proxy_set_header Upgrade $http_upgrade;: Upgrade 헤더를 전달하여 WebSocket 연결을 요청합니다.

  • proxy_set_header Connection 'upgrade';: Connection 헤더를 upgrade로 설정하여 WebSocket 연결을 유지합니다.

  • proxy_cache_bypass $http_upgrade;: WebSocket 연결 시 캐시를 우회합니다.

위 설정을 Nginx 설정 파일에 추가하고 Nginx를 재시작하면 WSS 연결 시 SSL 프로토콜 에러를 해결할 수 있습니다.

주의 사항

  • yourdomain.com, /path/to/your/certificate.crt, /path/to/your/private.key는 실제 환경에 맞게 수정해야 합니다.

  • WebSocket 연결을 위해 server.js에서도 필요한 설정을 추가해야 할 수 있습니다.

결론

Nginx 리버스 프록시 환경에서 WSS 연결 시 SSL 프로토콜 에러는 Nginx 설정 변경을 통해 해결할 수 있습니다. 위 해결 방법을 참고하여 안정적인 WebSocket 서비스를 구축하시기 바랍니다.

해시태그

 
 
 

Comments


bottom of page