본문 바로가기
서버/Server

[Server] Nginx 서버를 통한 리버스 프록시 및 로드밸런싱 구축

by jamong1014 2023. 4. 6.
반응형

리버스 프록시란?

리버스 프록시 개념(포워드 프록시와 리버스 프록시 차이점)

 

[Network]포워드 프록시(Forward Proxy)와 리버스 프록시(Reverse Proxy)

포워드 프록시(Forward Proxy) 우리가 흔히 사용하는 프록시 개념이다. 클라이언트(사용자)가 다이렉트로 직접 서버에 접근하는 것이 아닌 중간 중계기 역할을 해주는 프록시라는 서버가 먼저 요청

jamong1014.tistory.com

간단히 말해서 도메인에 대한 요청을 도메인(IP)에 보내게 되면 중간에서 Nginx 리버스 프록시 서버가 해당 요청을 확인하고 알맞는 내부 서버로 데이터를 전달해주는 역할입니다.

 

리버스 프록시 장점?

로드밸런싱, 캐싱, 트래픽 공격 완화, SSL 터미네이션, 보안 등 여러가지 장점이 있겠지만 어떠한 목적과 어떠한 환경에서 사용하느냐에 따라서 부각될 수 있는 장점들이 다릅니다.

 

CDN 서비스인 Cloudflare 서비스를 사용할 시 캐싱, 로드밸런싱, ddos 방어 굉장히 많은 솔루션을 적용시키지만 가장 

대표적인 목적은 익명성 보장 즉 내부 서버를 숨길 수가 있는것이죠.

 

하지만 외부 서비스가 아닌 사설 네트워크에서 nginx 또는 npm(nginx proxy manager) 로 구축하는 경우도 마찬가지로 보안, 캐싱, 로드밸런싱 등 적용시킬 수 있지만 내부 네트워크에서 구축하는 것 만큼 리버스 프록시 서버의 공인 아이피가 노출이 되어 Cloudflare 같은 외부 서비스를 이용하는 것보다는 보안성이 떨어질 수 있습니다.

 

하지만 내부에서 구축하는 것만큼 포트포워딩에 대한 포트 낭비, 인증서 적용 등 관리적인 측면에서 다루기가 훨씬 용이합니다.


준비물

  • Apache Web1 (192.168.221.135:80)
  • Apache Web2 (192.168.221.194:80)
  • NGINX Reverse Proxy (192.168.21.193:80)
sudo vi /etc/nginx/nginx.conf

  먼저 리버스 프록시 설정을 해주기 위해 vi /etc/nginx/nginx.conf 환경설정으로 들어가줍시다.

 

이게 기본 셋팅입니다.

upstream 'upstream 블록 이름' {
	server 로드밸런싱 대상1;
    server 로드밸런싱 대상2;
    // 순차적으로 우선순위를 가지고 있음
}

server {
listen 80; // 80으로 리버스 프록시 서버를 읽고
server_name nginx.foolblack.com // 해당 도메인으로 요청시 

location / {
	proxy_pass http://'upstream 블록 이름'; // 로드밸런싱 대상으로 리다이렉트
	}
}

즉 nginx.foolblack.com으로 요청 시 192.168.221.135를 우선순위로 192.168.221.194 둘 중에 하나로 분산되어 접속이 됩니다.

 

새로고침 1
새로고침 2


만약 로드밸런싱이 아닌 각각의 도메인을 가지고 해당 원하는 서버들로만 구성하고 싶다면 밑에 사진처럼 구성하면 됩니다.

준비물 : 도메인 2개, 웹 서버 2개

upstream 블록, 로드밸런싱을 구성하지 않고 단순히 리버스 프록시로만 구성하면 됩니다.

 

위 처럼 구성하면 nginx.foolblack.com은 http://192.168.221.135:80 으로 리다이렉트, nginx2.foolblack.com은 http://192.168.221.194:80 으로 리다이렉트 되는 것입니다.

 

nginx.foolblack.com 접속 결과
nginx2.foolblack.com 접속 결과

 

반응형

댓글