Proxy의 사전적 의미는 대신,대리라는 의미이다. 말 그대로 두개의 end-point에서 통신을 할때 중간에서 대리로 통신을 해주는것을 proxy라고 하고, 이 역할을 하는 서버를 proxy server라고 부른다.
웹 환경에서 생각해본다면 client와 server 사이의 중계서버 정도로 생각할 수 있다. proxy server는 보안목적이나 때로는 caching의 기능을 제공한다.
proxy server의 경우 네트워크 상 어디에 위치하냐느, 혹은 어느방향으로 데이터를 제공하냐에 따라 두가지 종류로 크게 나눌 수 있다.
- Forward proxy
- Reverse proxy
Forward Proxy
번역하면 정방향 프록시 정도가 되겠다. end user(client)와 internet 사이에 위치하여 user들이 보낸 요청을 가로채 중개자처럼 해당 client를 대신하여 웹서버와 통신한다.
표준 인터넷 통신에서는 A가 C에 direct연결이 되어 client는 원본 서버(C)에 요청을 보내며 원본 서버가 client에 응답하게 된다. forward proxy가 설정되면 A가 C에 바로 요청을 하는것이 아니라 B로 요청을 보내고 B가 그 요청을 C로 전달하며, 반대의 경우 역시 C에서 보낸 응답을 B가 A에게 전달한다.
그럼 forward proxy를 설정하는 이유는 무엇일까
- 액세스 권한을 제한
일부 조직에서는 방화벽을 사용해서 사용자들에게 제한된 인터넷 액세스 권한을 부여한다.forward proxy를 통해 이를 1차적으로 제한할 수 있다. 예를 들어 학교에서 컨텐츠 필터링 규칙을 활성화 하는 프록시를 통해 웹에 연결한다면, facebook이나 기타 소셜 미디어 사이트의 응답 전달을 막을 수 있다. - 온라인에서의 privacy 보호
forward proxy를 통하게 되면 인터넷에 남게되는IP주소의 출처가 proxy의IP주소로 고정이 되기 때문에 추적을 막을 수 있다.
Reverse Proxy
역방향 프록시는 하나 이상의 웹 서버 앞에 위치하여 client의 요청을 받는 서버이다. proxy가 client 앞에 위치하는 forward proxy와는 다르다. reverse proxy를 통해 어떤 client도 원본 서버와 직접 통신하지 못하도록 한다.
일반적으로 D의 모든 요청은 F로 직접 이동하고, F는 D에게로 직접 응답을 보낸다. reverse proxy를 사용하면 D의 모든 요청이 E로 직접 이동하고, E는 요청을 F에게로 보내며 F로부터 응답을 받는다. E는 그런 다음 적절한 응답을 D에게 전달한다.
- 부하 분산 (Load balancing)
단일 원본 서버로 들어오는 트래픽을 서로 다른 서버 풀에 분산하도록 하는 솔루션을 제공할 수 있다. - 공격에 대한 방어
원본 서버의IP주소를 공개하지 않기 때문에 공격자가DDoS와 같은 표적 공격을 활용하기가 훨씬 더 어렵다. - 캐싱
reverse proxy를 통해 원본 서버에서 받아온 응답을 캐싱할 수 있다.
정리
Forward proxy는 내부망에서 클라이언트로proxy server가 통신하여 인터넷을 통해 외부에서 데이터를 가져온다Reverse proxy는 내부망에서proxy server와 내부망 서버가 통신하여 인터넷을 통해 요청이 들어오면proxy server가 받아 응답해준다Forward proxy는 직접 서버 url로 요청을 보내지만,Reverse proxy는proxy server url로만 접근이 가능하다. 이로서reverse proxy는 본 서버의IP정보를 숨길 수 있는 효과를 얻게 된다Forward proxy는 내부망에서 인터넷 상에 있는 서버에 요청할 때 먼저forward proxy서버를 호출하고proxy가 서버에게 요청을 보내게 되는데, 이로서 서버에게 클라이언트가 누구인지 감출 수 있다. 즉, 서버 입장에서 응답받은IP는forward proxy의IP이기 때문에 클라이언트가 누군지 알 수 없다
- https://www.cloudflare.com/ko-kr/learning/cdn/glossary/reverse-proxy/