Menu

메모용 개발 블로그

전체보기 > Nginx >

Nginx TCP/UDP 리버스 프록시, 로드밸런싱

2022-07-21 00:34:44

서론

Nginx를 웹 서버와 http/https 리버스 프록시 용도로만 잘 사용하고 있었는데.

우연찮게 TCP/UDP도 가능하다는 것을 알게되었다.

그리고 공식 사이트 문서를 보니 너무나 쉽게 가능한 것을 확인할 수 있었다.

그래서 당장 쓸 곳은 없기는 하지만 궁금하므로 사용해보기로 하였다.

본론

문서

https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/

사실 문서에 모든 설명이 너무나 명확하게 적혀있고 너무나 쉽게 구성가능하다.

설정

stream {
        server {
                listen 포트 tcp또는udp;
                proxy_pass 목적지_주소;
        }
}

어찌되었건 stream 블럭 아래 작성만 되어 있으면 된다. nginx.conf 파일에다가 작성을 하던지 modules-available에 작성 후 modules-enabled에 링크를 하던지. 혹은 따로 경로를 만들고 따로 include 구문을 해놓고 사용하던지. 각자의 규모에 맞게 하면 된다.

여기서는 간편한 테스트이므로 modules-available 하단에 작성을 하고 링크를 해서 적용했다.

테스트

테스트는... 마인크래프트로 하였다. 마침 너무나 적절하게 열고 있는 서버이면서 단일포트로 서비스하는 서버였으므로 적합하였다.

아래는 동일한 서버의 다이렉트 연결과 Nginx경유 연결을 테스트 한 모습.

image-20220721002812649

서버로 직접 다이렉트로 연결되는 모습(와이파이, LTE 환경이라 국내 치고 핑이 높다.)

image-20220721002904088

일본에 위치한 클라우드 서버를 경유하여 연결되는 모습(클라이언트는 위와 동일 환경, 핑이 훨씬 높다.)

후기

기능이 잘되나 궁금해서 가장 직관적인 게임으로 테스트 해보았다.

다양한 프로토콜이나 프로그램에 적용이 가능해서 이러한 기능이 필요하다면 고려해볼만하다. 무엇보다 설정이 쉽다!

이러한 게임 서버를 본인 PC에서 열면서 불특정 다수와 즐길때 본인의 아이피 노출을 꺼릴 경우에도 괜찮지 않나 생각된다.