Reverse Proxy 고성능 NGINX Plus 사용하기
NGINX는 고성능 웹 서버로 명성을 얻었습니다. 많은 사람이 NGINX를 Reverse Proxy 로도 사용할 수 있다는 것을 알고 있지만, 그것이 얼마나 강력한 Reverse Proxy 인지 알지 못할 수도 있습니다.
목차
1. Reverse Proxy 란 무엇입니까?
2. Reverse Proxy 를 사용하면 어떤 이점이 있습니까?
3. NGINX Plus를 Reverse Proxy 로 사용
3-1. Load Balancing
3-2. Health Checks
3-3. Request Routing
3-4. Request and Response Rewriting
3-5. Caching
3-6. Compression
3-7. SSL/TLS Processing
3-8. Live Activity Monitoring and Logging
3-9. 그 외
1. Reverse Proxy 란 무엇입니까?
한 걸음 물러서서 프록시 서버가 무엇인지 묻는 것으로 시작하겠습니다. Wikipedia에 좋은 정의가 있다고 생각합니다.
“[A] 프록시 서버는 다른 서버에서 리소스를 찾는 클라이언트의 요청에 대해 중개자 역할을 하는 서버(컴퓨터 시스템 또는 애플리케이션)입니다.”
따라서 프록시 서버는 클라이언트와 클라이언트가 찾고 있는 데이터를 호스팅하는 실제 서버 사이에 있습니다. 클라이언트에게 프록시 서버는 실제 백엔드 서버로 나타나고 백엔드 서버에게는 프록시 서버가 클라이언트처럼 보입니다. Reverse Proxy 서버를 정의하기 위해 Wikipedia로 돌아갑니다.
“[A] Reverse Proxy 는 클라이언트를 대신하여 하나 이상의 서버에서 리소스를 검색하는 프록시 서버 유형입니다.”
차이점은 프록시 서버는 클라이언트와 단 하나의 백엔드 서버 사이에 있지만 Reverse Proxy 서버는 하나 이상의 백엔드 서버 앞에 있으며 각 요청에 사용할 서버를 결정한다는 것입니다.
2. Reverse Proxy 를 사용하면 어떤 이점이 있습니까?
Reverse Proxy 서버를 사용하려는 이유는 무엇입니까? 다음과 같은 혜택이 있습니다.
- 동시성 – 인터넷 애플리케이션에는 각각 여러 연결을 여는 많은 수의 클라이언트가 포함되어 백엔드 서버에 대한 연결 수가 매우 많습니다. 많은 웹 서버와 애플리케이션 서버는 많은 수의 연결을 잘 처리하지 못하므로(웹 서버로 사용되는 NGINX는 예외임) 여러 연결을 더 잘 처리할 수 있는 Reverse Proxy 를 추가하면 백엔드 서버 성능이 현저하게 향상될 수 있습니다.
- 탄력성 – 클라이언트가 백엔드 서버에 직접 연결하고 오류가 발생하는 경우 현재 서버에 연결되어 있거나 연결을 시도하는 모든 클라이언트는 요청이 실패하는 것을 확인합니다. Reverse Proxy 서버는 백엔드 서버의 상태를 모니터링하고 장애가 발생한 서버가 다시 서비스될 때까지 요청 전송을 중지할 수 있습니다. Reverse Proxy가 여전히 작동 중인 백엔드 서버에 자동으로 요청을 보내기 때문에 클라이언트에 오류가 표시되지 않습니다.
- 확장성 – Reverse Proxy 는 백엔드 서버 그룹의 단일 “공용 얼굴”이므로 변화하는 트래픽부에 대응하여 서버를 추가 및 제거할 수 있습니다.
- Layer 7 라우팅 – Reverse Proxy 는 모든 서버로 향하는 트래픽을 확인하고 필요에 따라 요청 및 응답을 수정하여 각 요청을 보낼 위치에 대한 지능적인 결정을 내릴 수 있습니다. 요청의 특정 HTTP 헤더, URL의 일부, 클라이언트의 지리적 위치 등을 기반으로 라우팅 결정을 내릴 수 있습니다.
- 캐싱 – Reverse Proxy는 캐싱을 수행하기에 좋은 장소입니다. 일반적으로 백엔드 서버에 모든 요청을 보내고 각 백엔드 서버가 자체 캐시를 구축하도록 하는 것보다 콘텐츠를 캐싱하는 것이 훨씬 더 효율적입니다.
- 기타 기능 – Reverse Proxy는 백엔드 서버 앞에 위치하여 대역폭 또는 요청 속도를 기반으로 한 트래픽 셰이핑, 연결 제한, 다양한 인증 체계와의 통합, 활동 모니터링 등과 같은 다른 기능도 수행할 수 있습니다.
3. NGINX Plus를 Reverse Proxy 로 사용
NGINX Plus는 NGINX 오픈 소스의 유명한 웹 서버 기능에 더 많은 기능을 도입하여 독점 하드웨어 어플라이언스를 대신할 수 있는 완전한 기능을 갖춘 애플리케이션 제공 컨트롤러(ADC)로 만듭니다.
다음은 NGINX Plus에서 사용할 수 있는 기능 중 일부입니다.
3-1. Load Balancing
가중 및 비가중 모두에서 선택할 수 있는 여러 로드 밸런싱 알고리즘이 있습니다. 세션 지속성도 지원됩니다. NGINX Plus는 HTTP, HTTPS, WebSocket, FastCGI, memcached, SCGI, SPDY[NGINX Plus도 부하 분산하는 HTTP/2에 의해 폐기됨] 및 uwsgi의 부하를 분산할 수 있습니다. 더보기.
3-2. Health Checks
백엔드 서버 상태의 수동 및 능동 모니터링이 모두 지원됩니다. NGINX Plus가 노드에 연결할 수 없는 경우 해당 노드는 다운된 것으로 표시됩니다. 백엔드 노드에 대해 주기적으로 실행되도록 활성 상태 확인을 구성할 수도 있습니다. 또한 느린 시작 기능을 사용하면 NGINX Plus가 방금 온라인 상태가 된 노드로 트래픽을 천천히 증가시켜 과도한 트래픽 폭주로 노드가 압도당하지 않도록 할 수 있습니다. 더보기.
3-3. Request Routing
클라이언트 IP 주소, 호스트 이름, URI, 쿼리 문자열, 헤더 등과 같은 요청의 모든 부분을 기반으로 트래픽을 라우팅할 수 있습니다.
3-4. Request and Response Rewriting
헤더, 본문 및 URI를 포함하여 요청 또는 응답의 모든 부분을 수정할 수 있습니다. NGINX Plus는 헤더를 추가하고 삭제할 수도 있습니다. 더보기.
3-5. Caching
응답을 캐시할 수 있으며 캐시할 콘텐츠 유형과 기간을 구성할 수 있습니다. 캐시에서 항목을 제거할 수도 있습니다. 더보기.
3-6. Compression
Gzip 압축이 지원되며 압축할 콘텐츠와 압축을 사용할 시기를 세밀하게 제어할 수 있습니다. 더보기.
3-7. SSL/TLS Processing
SSL/TLS 복호화 및 암호화가 지원되며 서로 다른 인증서를 사용하여 많은 도메인 이름에 대해 복호화를 수행할 수 있습니다. 더보기.
3-8. Live Activity Monitoring and Logging
JSON 형식으로 인코딩된 NGINX Plus 통계는 간단한 HTTP 요청을 통해 사용할 수 있습니다. 통계를 표시하기 위해 대시보드 웹 페이지가 제공되거나 사용자 지정 또는 타사 모니터링 도구에 제공할 수 있습니다. 사용자 지정 형식의 로그는 로컬 로깅 및 syslog로 내보내기 모두에 대해 구성할 수 있습니다. 더보기.
3-9. Reverse Proxy 그 외
NGINX에는 비디오 스트리밍 지원, 메일 프록시 지원, GeoIP 지원, 다운타임 없는 정상적인 재시작 및 업그레이드, 트래픽 쉐이핑, 연결 제한 등과 같은 더 많은 기능이 있습니다.
자세한 내용은 nginxstore.com을 방문하십시오.
사용 사례에 대해 최신 소식을 빠르게 전달받고 싶으시면 아래 뉴스레터를 구독하세요.