Server

[nginx] ssl 연동하여 배포한 서버 socket 연결하기

hyun_ji 2023. 1. 4. 16:08
반응형
SMALL

서버에 ssl 연동하여 배포하고 소켓에서 https로 통신을 시도하면 에러가 납니다.

소켓 요청에 대한 프록시 설정을 따로 해주지 않았기 때문입니다.

 

소켓 공식문서를 보시면 https://socket.io/docs/v3/reverse-proxy/#nginx 

nginx 연동을 어떻게 해야하는지 나와있습니다.

 

  location ^~ /socket {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $host;

      proxy_pass http://localhost:3000; // 포트번호를 소켓을 배포한 서버의 포트로 작성합니다.

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

 

위처럼 작성해주시고,

클라이언트 소켓 커넥트에 ssl이 입혀진 배포한 통신주소를 입력하면 문제없이 소켓연결이 됩니다.

const socket = socketio.connect("/"); // ssl이 입혀진 배포한 통신주소

 

 

만약에 여러개의 서버에서 소켓 여러개를 돌린다면 아래의 양식으로 패스를 지정해주면 됩니다.

const socket = socketio.connect("/", { path: "/test/socket.io" });
  location /test/ {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $host;

      proxy_pass http://localhost:3000/socket.io/;  // 포트번호를 소켓을 배포한 서버의 포트로 작성합니다.

      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }
반응형
LIST