Forward Proxy와 Reverse Proxy
Proxy
- 클라이언트와 서버간의 중계 서버로, 통신을 대리 수행하는 서버
- 아주 간단하게 대리 역할을 하는 서버라고 이해해두자.
Forward Proxy
- 일반적인 proxy는 Forward Proxy
- Forward Proxy 위치는 클라이언트와 인터넷 사이에 있음
- 클라이언트 <> Forward Proxy <> 인터넷 <> 서버
특징 1: 캐싱(Caching)
- 클라이언트가 요청한 내용을 캐싱해둔다 라고 많이함
- 예를 들어, 클라이언트가 오늘 날씨가 어때? 라고 물어보면 Forward Proxy에서 서버에 물어보고 그 대답을 캐싱해서 저장해둡니다. 그러면 이후에 같은 질문이 왔을때는 서버에 물어보지 않고 바로 클라이언트에 대답해줄 수 있음 ← 이게 Forward Proxy 캐싱의 효과
- 이렇게 되면
- 1) 전송시간 절약
- 2) 서버로의 불필요한 외부 전송 미발생
- 3) 서버로의 불필요한 외부 전송 미발생하니 서버로의 외부 요청 감소 ⇒ 네트워크 병목 현상 방지
특징 2: 익명성
- 익명성은 "클라이언트가 보낸 요청을 감춘다" 라는 의미
- 아래 그림 같은 경우 프록시 서버가 없기 때문에 클라이언트의 정보 등이 서버에 다 전송될 수 있음

- 아래의 그림 처럼 포워드 프록시가 생기면 클라이언트가 요청한 내용을 포워드 프록시 서버가 받아서 요청하면서 클라이언트의 정보를 숨겨서 익명성을 보장 받을 수 있다.
- 즉, 서버는 응답 받은 요청을 누가 보냈는지 알지 못하게 됨.
- 예를 들어, 서버가 받은 요청을 한 서버의 IP = (Forward) Proxy IP 가 됨.

Reverse Proxy
- Forward Proxy는 클라이언트와 인터넷 사이에 위치했지만,
- 클라이언트 <> Forward Proxy <> 인터넷 <> 서버
- Reverse Proxy는 서버와 클라이언트 사이에 위치
- 클라이언트 <> 인터넷 <> Reverse Proxy <> 서버

특징 1: 캐싱(Caching)
특징 2: 보안
- 서버정보를 클라이언트로부터 숨길 수 있다는 점
- 클라이언트는 요청을 할 때 서버들을 직접 알지 못하고, 클라이언트의 입장에서 서버인 Reverse Proxy에게 요청을 전달합니다. 그러면 Reverse Proxy가 자기가 알고있는 서버들에게 요청을 전달함
- 따라서, 클라이언트는 Reverse Proxy를 실제 서버라고 생각하여 요청하기 때문에 실제 서버의 IP가 노출되지 않음 ⇒ 실제 서버의 IP가 노출되지 않음
특징 3: 로드 밸런싱(Load Balancing)
- 로드 밸런싱을 하는 경우도 있고, 하지 않는 경우도 있음.(Optional)
- 로드 밸런싱은 해야할 작업을 나누어, 서버의 부하를 분산시키는 것.
= 여러 대의 서버가 분산(나누어) 처리할 수 있도록 요청을 나누어주는 서비스.
- 로드 밸런서(Load Balancer)
- 서버들에게 요청을 나눠줌
- 클라이언트가 많아지면 1대의 서버로 다 감당이 안되니깐, 여러대의 서버를 운영하면서 요청을 나눠주게됨 ⇒ 요청을 나눠주는 역할을 하는게 Reverse Proxy 서버 = 로드 밸런서, 이 작업을 로드 밸런싱 이라고 함
References