블로그 | NGINX

NGINX Plus를 사용한 역방향 프록시

NGINX-F5-수평-검정-유형-RGB의 일부
릭 넬슨 썸네일
릭 넬슨
2014년 4월 10일 게시

NGINX는 매우 고성능 웹 서버로서 정당한 명성을 얻었습니다. 많은 사람들이 NGINX를 역방향 프록시로도 사용할 수 있다는 사실을 알고 있지만, 그것이 얼마나 강력한 역방향 프록시인지는 알지 못하는 것 같습니다.

역방향 프록시란 무엇인가요?

우선, 한 걸음 물러서서 프록시 서버란 무엇인지 질문해 보겠습니다.  저는 위키피디아 에 좋은 정의가 있다고 생각합니다:

프록시 서버는 다른 서버에서 리소스를 찾는 클라이언트의 요청에 대한 중개자 역할을 하는 서버(컴퓨터 시스템 또는 애플리케이션)입니다.

따라서 프록시 서버는 클라이언트와 클라이언트가 찾고 있는 데이터를 호스팅하는 실제 서버 사이에 위치합니다. 클라이언트 입장에서는 프록시 서버가 실제 백엔드 서버처럼 보이고, 백엔드 서버에서는 프록시 서버가 클라이언트처럼 보입니다. 역방향 프록시 서버를 정의하려면 Wikipedia 로 돌아가보자.

" [A] 역방향 프록시는 클라이언트를 대신하여 하나 이상의 서버에서 리소스를 검색하는 프록시 서버 유형입니다. "

차이점은 프록시 서버는 클라이언트와 하나의 백엔드 서버 사이에 위치하는 반면, 리버스 프록시 서버는 하나 이상의 백엔드 서버 앞에 위치하여 각 요청에 어떤 백엔드 서버를 사용할지 결정한다는 것입니다.

역방향 프록시를 사용하면 어떤 이점이 있나요?

왜 역방향 프록시 서버를 사용하고 싶습니까?  다양한 이점이 있습니다:

  • 동시성 – 인터넷 애플리케이션은 종종 많은 수의 클라이언트가 여러 연결을 열고, 이로 인해 백엔드 서버에 연결되는 연결 수가 매우 많아집니다. 많은 웹 서버와 애플리케이션 서버는 많은 수의 연결을 잘 처리하지 못합니다(NGINX를 웹 서버로 사용하는 것은 예외입니다). 따라서 여러 연결을 더 잘 처리할 수 있는 역방향 프록시를 추가하면 백엔드 서버 성능이 현저히 향상될 수 있습니다.
  • 복원력 - 클라이언트가 백엔드 서버에 직접 연결하고 해당 서버에 장애가 발생하면 현재 서버에 연결된(또는 연결을 시도하는) 모든 클라이언트의 요청이 실패합니다. 역방향 프록시 서버는 백엔드 서버의 상태를 모니터링하고, 장애가 발생한 서버로의 요청을 중단하여 서비스가 다시 시작될 때까지 기다릴 수 있습니다. 클라이언트는 역방향 프록시가 자동으로 요청을 여전히 작동 중인 백엔드 서버로 전송하기 때문에 오류를 보지 못합니다.
  • 확장성 – 역방향 프록시는 백엔드 서버 그룹의 단일 "공개적인 면"이므로 트래픽 부하의 변화에 따라 서버를 추가하거나 제거할 수 있습니다.
  • 7계층 라우팅 – 역방향 프록시는 모든 서버로 향하는 트래픽을 확인하고 각 요청을 어디로 보낼지에 대한 지능적인 결정을 내리고 필요에 따라 요청과 응답을 수정할 수 있습니다. 요청의 특정 HTTP 헤더, URL의 일부, 클라이언트의 지리적 위치 등을 기반으로 라우팅 결정을 내릴 수 있습니다.
  • 캐싱 - 역방향 프록시는 캐싱을 수행하기에 좋은 곳입니다. 일반적으로 모든 요청을 백엔드 서버로 보내고 각 백엔드 서버가 자체 캐시를 구축하는 것보다, 역방향 프록시에서 콘텐츠를 캐싱하는 것이 훨씬 효율적입니다.
  • 기타 기능 – 백엔드 서버 앞에 위치하여 역방향 프록시는 대역폭이나 요청 속도에 따른 트래픽 조정, 연결 제한, 다양한 권한 부여 체계와의 통합, 활동 모니터링 등 다른 기능도 수행할 수 있습니다.

NGINX Plus를 역방향 프록시로 사용

NGINX Plus는 NGINX 오픈 소스의 유명한 웹 서버 기능에 더 많은 기능을 도입하여 NGINX Plus를 독점 하드웨어 어플라이언스를 대체할 수 있는 모든 기능을 갖춘 애플리케이션 전송 컨트롤러(ADC)로 만듭니다.

NGINX Plus에서 사용할 수 있는 기능 중 일부는 다음과 같습니다.

부하 분산

선택할 수 있는 부하 분산 알고리즘은 가중치가 있는 것과 없는 것 모두 여러 가지가 있습니다. 세션 지속성도 지원됩니다. NGINX Plus는 HTTP, HTTPS, WebSocket, FastCGI, memcached, SCGI, SPDY[NGINX Plus가 부하를 분산하는 HTTP/2로 인해 폐기됨] 및 uwsgi에 대한 부하를 분산할 수 있습니다. 더 읽어보세요 .

건강 검진

백엔드 서버 상태에 대한 수동 및 능동 모니터링이 모두 지원됩니다. NGINX Plus가 노드에 연결하지 못하면 해당 노드는 다운된 것으로 표시됩니다. 활성 상태 검사는 백엔드 노드에 대해 주기적으로 실행되도록 구성할 수도 있습니다. 또한, 슬로우 스타트 기능을 사용하면 NGINX Plus가 방금 온라인 상태가 된 노드로의 트래픽을 천천히 늘려서 갑자기 많은 트래픽이 발생하여 노드가 과부하되는 것을 방지할 수 있습니다. 더 읽어보세요 .

요청 라우팅

트래픽은 클라이언트 IP 주소, 호스트 이름, URI, 쿼리 문자열, 헤더 등 요청의 모든 부분을 기준으로 라우팅될 수 있습니다.

요청 및 응답 다시 쓰기

헤더, 본문, URI를 포함하여 요청이나 응답의 모든 부분을 수정할 수 있습니다. NGINX Plus는 헤더를 추가하고 삭제할 수도 있습니다. 더 읽어보세요 .

캐싱

응답을 캐시할 수 있으며, 캐시할 콘텐츠 유형과 캐시 기간을 구성할 수 있습니다. 캐시에서 항목을 삭제할 수도 있습니다. 더 읽어보세요 .

압축

Gzip 압축이 지원되어 어떤 콘텐츠를 압축할지, 언제 압축을 사용할지 세밀하게 제어할 수 있습니다. 더 읽어보세요 .

SSL/TLS 처리

SSL/TLS 복호화 및 암호화가 지원되며, 다양한 인증서를 사용하여 다양한 도메인 이름의 복호화를 수행할 수 있습니다. 더 읽어보세요 .

라이브 활동 모니터링 및 로깅

JSON 형식으로 인코딩된 NGINX Plus 통계는 간단한 HTTP 요청을 통해 사용할 수 있습니다. 통계를 표시하기 위한 대시보드 웹 페이지가 제공되거나 사용자 정의 또는 타사 모니터링 도구에 통계를 제공할 수 있습니다. 사용자 정의 형식의 로그는 로컬 로깅과 syslog로 내보내기 모두에 대해 구성할 수 있습니다. 더 읽어보세요 .

그리고 훨씬 더 많은 것들

NGINX는 비디오 스트리밍 지원, 메일 프록시 지원, GeoIP 지원, 다운타임 없는 원활한 재시작 및 업그레이드, 트래픽 셰이핑, 연결 제한 등 더 많은 기능을 제공합니다. 자세한 내용은 nginx.comnginx.org 에서 확인하세요.


"이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."