리버스 프록시
리버스 프록시(reverse proxy)는 클라이언트의 요청을 받아 하나 이상의 내부 서버로 전달하고 결과를 다시 클라이언트에 제공하는 중개 서버다. 외부 사용자에게는 단일한 웹 서버처럼 보일 수 있지만 실제 요청 처리와 데이터 생성은 뒤쪽의 여러 응용 서버에서 이루어질 수 있다. 정적...
| 분류 | 서버 중개 소프트웨어 |
|---|---|
| 정식 명칭 및 정의 | 클라이언트 요청의 내부 서버 전달 |
| 관련 기술 | World Wide Web, HTTP, 웹 브라우저, 웹 서버 |
| 기술 참고 | NGINX: Reverse Proxy |
리버스 프록시(reverse proxy)는 클라이언트의 요청을 받아 하나 이상의 내부 서버로 전달하고 결과를 다시 클라이언트에 제공하는 중개 서버다. 외부 사용자에게는 단일한 웹 서버처럼 보일 수 있지만 실제 요청 처리와 데이터 생성은 뒤쪽의 여러 응용 서버에서 이루어질 수 있다. 정적 파일 서비스, 보안 경계 구성, 부하 분산과 서비스별 라우팅에 널리 사용된다.
일반적인 포워드 프록시는 클라이언트를 대신해 외부 자원에 접근하는 반면 리버스 프록시는 서버 측의 진입점에 배치된다. 리버스 프록시는 URL 경로와 호스트, 요청 메서드 등의 정보를 기준으로 백엔드를 선택할 수 있다. 동일한 도메인 아래에서 서로 다른 응용 프로그램과 API를 제공하는 구성을 구현할 때 유용하다.
리버스 프록시는 TLS 연결을 종료해 외부의 HTTPS 요청을 받은 뒤 내부 서비스로 다시 전달할 수 있다. 이 과정에서 Host, Forwarded, X-Forwarded-For 등의 헤더를 어떻게 취급할지 정확히 정의해야 한다. 클라이언트의 원래 IP나 프로토콜을 신뢰할 수 없는 요청 헤더에서 무조건 받아들이면 접근 제어와 로그에 오류가 생길 수 있다.
부하 분산 기능을 제공하는 프록시는 여러 백엔드로 요청을 나누고 서버의 상태를 확인하며 장애가 발생한 대상으로 요청을 보내지 않도록 구성할 수 있다. 응답 캐시와 압축, 연결 재사용, WebSocket 업그레이드 처리도 상황에 따라 제공된다. 프록시가 버퍼링하는 스트리밍 응답은 Server-Sent Events 같은 실시간 서비스의 지연 특성에 영향을 줄 수 있다.
리버스 프록시의 운영에서는 요청 크기와 시간 제한, TLS 인증서 갱신, 속도 제한 및 액세스 로그를 관리해야 한다. 잘못된 프록시 설정은 요청 경로를 변형하거나 내부 관리 서비스를 외부에 노출할 수 있다. nginx, HAProxy, Apache HTTP Server, Caddy 등은 서로 다른 구성 방식으로 리버스 프록시 기능을 제공한다.[1]