리버스 프록시 소켓 통신

JaeGu Jeong·2023년 3월 10일
0

Docker환경 api서버 컨테이너와 프론트엔드서버를 nginx로 리버스 프록시 환경을 구축하였다.

'''
upstream front {
server pong_front:3000;
}

upstream nestjs {
server pong_nestjs:3000;
}

server {
listen 80;
server_name ${SERVER_HOST};

location / {
proxy_pass http://front;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";

}

location /api {
proxy_pass http://nestjs;
proxy_http_version 1.1;
}

location /socket.io {
proxy_buffering off;
proxy_pass http://nestjs/socket.io;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
}

'''

현재의 리버스 프록시 환경을 구축하기전까지 api서버가 3000포트로 열려있었고 프론트는 80포트로 도커를 통해 서비스하고있었다.
현재는 nginx만 80포트로 열어서 서비스 되도록 도커 환경을 만들었다.

리버스 프록시 환경을 구축하면서 소켓도 nginx를 경유하도록 하는 부분이 시간이 좀 걸렸다.
결국 구글링을 통해 채팅을 성공적으로 연결했나 싶다가도 퐁 게임 플레이에서 어마무시한 leg이 걸리는 것을 확인하였다.
알고보니 nginx에서 기본적으로 버퍼를 사용하고 있기에 실시간 게임에서 지연이 발생하는 것이였다.
"proxy_buffering off" 옵션을 넣어주면서 게임 지연 현상을 해결하였다.

profile
BackEnd Developer

0개의 댓글