一。프록시란 무엇인가?
물론, 여기서의 프록시는 Web 프록시 서비스를 지칭하며, 클라이언트의 리소스 요청과 이러한 리소스를 제공하는 Web 서비스 사이에서 중개자 역할을 합니다:
In computer networking, a proxy server is a server application or appliance that acts as an intermediary for requests from clients seeking resources from servers that provide those resources.
프록시 서비스는 클라이언트 측에 구현하거나, 클라이언트에서 타겟 서버까지의 임의의 위치에 구현할 수도 있습니다:
A proxy server may reside on the user's local computer, or at any point between the user's computer and destination servers on the Internet.
예를 들어, 클라이언트는 타겟 리소스를 제공하는 Web 서비스에 직접 요청을 보내는 것이 아니라, 타겟 리소스의 전체 URL 을付けて 프록시 서비스에 요청합니다:
GET http://en.wikipedia.org/wiki/Proxy_server HTTP/1.1
Accept: text/html
프록시 서비스는 수신 후, (프록시 서비스가) 지정된 리소스를 요청하고 응답 결과를 클라이언트에 전달합니다:
HTTP/1.1 200 OK
Content-Type: text/html; charset UTF-8
二。리버스 프록시란 무엇인가?
'리버스'는 당연히 '포워드'에 대한 것이므로, 먼저 포워드 프록시가 무엇인지 알아야 합니다?
포워드 프록시
![]()
포워드 프록시는 대외적이며, 외부 리소스面向, 네트워크에서 다양한 데이터를 가져오는 데 사용됩니다:
A forward proxy is an Internet-facing proxy used to retrieve data from a wide range of sources (in most cases anywhere on the Internet).
클라이언트를 대신하여 리소스 요청을 보내고, 응답 결과를 해당 클라이언트에 반환합니다. 따라서, 포워드 프록시는 클라이언트에 가깝고, 클라이언트와의 관계가 더 밀접 합니다 (서버와의 관계는 일반적이며, 친하지 않음)
리버스 프록시
![]()
리버스 프록시는 트래픽을 설정 규칙에 따라 내부 서버로 리디렉션하는 책임이 있으며, 외부 요청은 인트라넷의 존재를 알지 못합니다:
A reverse proxy taking requests from the Internet and forwarding them to servers in an internal network. Those making requests to the proxy may not be aware of the internal network.
리버스 프록시는 대내적이며, 내부 리소스面向, 프라이빗 네트워크상의 서버에 대한 액세스 제어 및 보호의 프런트엔드로 사용됩니다:
A reverse proxy is usually an internal-facing proxy used as a front-end to control and protect access to a server on a private network.
따라서, 리버스 프록시는 서버에 가깝고, 서버와의 관계가 특별 하며, 제한된 일부 리소스만 제공합니다 (포워드 프록시처럼 네트워크에서 다양한 리소스를 가져올 수 있는 것과는 다릅니다):
The reverse proxy sits closer to the web server and serves only a restricted set of websites.
또한, 이 프록시 관계는 사용자에게 반드시 투명합니다. 사용���는 소스 서비스에 연결하고 있는지 프록시 서비스에 연결하고 있는지 알 수 없기 때문입니다:
A reverse proxy (or surrogate) is a proxy server that appears to clients to be an ordinary server.
한편, 사용자는 포워드 프록시에 대해 일반적으로 인지하고 있으며, 프록시를 통해 네트워크 리소스에 액세스하고 있음을 명확히 알고 있습니다
P.S.포워드, 리버스 프록시 외에, 다음이 있습니다:
-
오픈 프록시 (Open proxy): 일반 공개 (누구나 액세스 가능) 된 포워드 프록시
-
익명 프록시 (Anonymous proxy): 클라이언트의 원본 IP 주소를 공개하지 않는 프록시 서비스
-
투명 프록시 (Transparent proxy): 요청과 응답을 투명하게 전달하며, 아무런 수정도 하지 않음. 게이트웨이 (Gateway) 나 라우터로 사용
三。'리버스'를 어떻게 이해하는가?
리버스 프록시와 포워드 프록시의 작동 원리는 완전히 같아서 구분하기 어렵습니다:
![]()
실제로, 중요한 차이점은, 포워드 프록시는 관련된 클라이언트와 모든 서버 사이의 중개자이며, 리버스 프록시는 관련된 서버와 모든 클라이언트 사이의 중개자 입니다:
Unlike a forward proxy, which is an intermediary for its associated clients to contact any server, a reverse proxy is an intermediary for its associated servers to be contacted by any client.
즉, 포워드 프록시는 클라이언트를 대표하고, 리버스 프록시는 서버를 대표 합니다:
A proxy acts on behalf of the client(s), while a reverse proxy acts on behalf of the server(s).
방향으로 보면, 포워드 프록시는 클라이언트를 대신하여 리소스를 요청하고, 리버스 프록시는 서버를 대신하여 리소스를 제공합니다:
[caption id="attachment_2115" align="alignnone" width="806"]
why reverse proxy named as reverse[/caption]
四。리버스 프록시는 어떤 역할이 있는가?
리버스 프록시는 다음과 같은 시나리오에서 자주 사용됩니다:
-
암호화/SSL 가속: SSL 암호화 작업을 SSL 하드웨어 가속기를 탑재한 리버스 프록시에 맡김
-
부하 분산: 트래픽 부하를 여러 Web 서버에 분산
-
정적 콘텐츠 호스팅/캐시: 정적 콘텐츠 (이미지 등) 를 리버스 프록시에 맡겨, 소스 사이트의 부하 분담
-
압축: 프록시 서버는 리소스 콘텐츠를 압축 최적화하여 로딩 속도 향상
-
보안 보호: 소스 서버의 존재와 그 특징을 은폐하고, 방화벽과 결합하여 일반적인 Web 공격 방어
-
액세스 제어: 콘텐츠 모니터링/필터링. 직장, 학교 등에서 자주 사용
SSL 가속
HTTP 서비스의 경우, 리버스 프록시의 레이어를 통해 SSL 암호화를 구현할 수 있습니다. 자세한 내용은 [nginx HTTPS 리버스 프록시](/articles/nginx-https 反向代理/) 참조
부하 분산
리버스 프록시는 부하 분산 메커니즘 구현에도 사용됩니다. 아래 그림과 같습니다:

既定의 전달 규칙 (즉 부하 분산 전략) 에 따라 클라이언트 요청을 각 서버에 배분하고, 그 응답 결과를 해당 클라이언트에 반환합니다
P.S.부하 분산에 대한 자세한 정보는, 부하 분산_시스템 설계 노트 5 참조
아직 댓글이 없습니다