EC2 환경에서 WebSocket Connection Error 해결

pickylemon·2024년 6월 17일

Exception 모음

목록 보기
26/31

상황

  • 로컬에서는 WebSocket Connection이 잘 생성되었는데,
    ec2로 옮기자 connection 생성이 안되는 현상
  • Spring log
    Handshake failed due to invalid Upgrade header: null

문제 및 해결

  • nginx 사이트에 따르면 원인은 다음과 같다.

  • 즉, HTTP handshake시 Client는 Server로 WebSocket upgrade 요청을 보내는데, 이 요청은 프록시 서버에는 전달되지 않기 때문에,
    명시적으로 header가 전달되어야 한다는 것.

  • hop-by-hop header는 좀 더 알아봐야 할 것 같다.

  • 그래서 프록시 설정에 다음을 추가해야 한다.

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

  • sudo nginx -s reload 후 다시 접속하면 웹소켓이 정상적으로 연결된다!

hop by hop 헤더

호프-바이-호프 헤더는 단일 전송 수준 연결에 특정한 헤더로, 
주로 HTTP/1.1에서 두 노드 간의 데이터를 관리하는 데 사용됩니다.
(예: 클라이언트-프록시 또는 프록시-프록시). 
이러한 헤더는 전달되지 않도록 설계되었습니다.

https://book.hacktricks.xyz/v/kr/pentesting-web/abusing-hop-by-hop-headers


참고

profile
안녕하세요

0개의 댓글