NGINX 웹 서버에서 리버스 프록시를 설정하는 방법을 알아보고, 실습을 통해 쉽게 적용하고 사용할 수 있습니다.
NGINX 웹 서버에서 리버스 프록시를 설정하는 방법을 알아보고, 실습을 통해 쉽게 적용하고 사용할 수 있습니다.
실습 환경
- 운영 체제(OS) : CentOS 8
- 실행 계정 : root
NGINX Reverse Proxy 란?
Proxy는 일반적으로 여러 서버 간에 부하를 분산시키거나, 서로 다른 웹 사이트의 콘텐츠를 원활하게 표시하거나, HTTP 이외의 프로토콜을 통해 애플리케이션 서버에 처리 요청을 전달하는 데 사용됩니다.
NGINX 리버스 프록시의 용도는 로드 밸런싱을 제공하는 것입니다.
Nginx Reverse Proxy 구성도 |
Forward Proxy와 Reverse Proxy의 차이점
Forward Proxy 란?
일반적으로 Proxy 라고 불리며, 클라이언트에서 요청 시 Proxy를 통해 목적지에 요청하고 응답 받는 것을 말합니다.
Proxy가 요청자를 대신해서 웹 사이트를 검색하거나 컨텐츠를 받아서 전달해주는 중계자 역할을 합니다.
Reverse Proxy 란?
Load Balancer의 용도로도 사용되며, 클라이언트의 요청을 받아서 내부 서버로 전달해주는 Proxy를 말합니다.
서비스/콘텐츠 제공자인 서버에서 사용되며, 대표적으로 CDN 서비스가 있습니다.
NGINX Reverse Proxy 설정하기
NGINX는 요청을 프록시 할 때 요청을 지정된 프록시 서버로 보내고 응답을 가져온 다음 클라이언트로 다시 전송합니다.
HTTP 서버(NGINX/APACHE) 또는 비 HTTP 서버(PHP 또는 파이썬과 같이 특정 프레임워크로 개발된 애플리케이션을 특정 프로토콜을 사용하여 실행할 수 있는 서버)에 요청을 프록시할 수 있습니다.
지원되는 프로토콜로는 FastCGI, uwsgi, SCGI, memcached 등이 있습니다.
테스트 서버 정보
- Proxy Server : NGINX Reverse Proxy (192.168.10.100:80)
- Server 1: Apache Web (192.168.10.101:80)
- Server 2: Apache Tomcat (192.168.10.102:8080)
NGINX 설정 추가하기
nginx.conf 파일에 proxy 관련 설정을 추가합니다. upstream 구문으로 이름을 설정하고 서버 아이피와 포트를 추가 합니다.
[sudo vi /etc/nginx/nginx.conf]
다음 내용을 추가합니다.
[http { proxy_intercept_errors on; proxy_buffers 256 4k; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Real-IP $remote_addr; proxy_read_timeout 300s; proxy_send_timeout 300s; proxy_connect_timeout 300s; upstream apache_web { server 192.168.10.101:80; } upstream apache_tomcat { server 192.168.10.102:8080; }]
apache_web 이나 apache_tomcat 으로 이름을 부여 한것을 볼 수 있는데, 다수의 서버가 있을 경우 아래와 같이 그룹으로 묶을 수 있습니다.
[upstream apache_web { server 192.168.10.101:80; server 192.168.10.102:80; server 192.168.10.103:80; }]
웹 서버의 도메인을 example-proxy.com 이라고 가정했을 경우 아래와 같이 설정 파일을 작성하시면 됩니다.
example-proxy.conf 파일로 해당 도메인의 /와 /app로 접속 시 위에서 설정한 서버들로 Proxy 해 주는 예제입니다.
URL 경로(path)가 / 일 경우 apache_web으로 Proxy 하고 /app로 접속 할 경우 apache_tomcat으로 Proxy 하게 됩니다.
동일한 서비스의 다중 서버를 구성한 뒤 upstream에 추가해주면 로드밸런싱이 적용됩니다.
[sudo vi /etc/nginx/conf.d/exampale-proxy.conf]
[server { liseten 80; server_name example-proxy.com; location / { proxy_pass http://apache_web/; } location /app { proxy_pass http://apache_tomcat/; }]
마무리
리눅스 서버에서 Nginx Reverse Proxy 설정 방법에 대해 알아보았습니다.
위 실습 내용을 통해 쉽게 적용하고 사용할 수 있습니다.
COMMENTS