Proxy

2024. 4. 30. 10:27

Proxy란

- 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램

- 서버와 클라이언트 사이에 중계기로서, 대리로 통신을 수행하는 것을 프록시, 그 중계 기능을 하는 것을 프록시 서버라고 함

- 조금 더 면밀히 말하면, 사용자와 인터넷 사이에 게이트웨이를 제공하는 시스템 또는 라우터

- Proxy에는 Forward Proxy와 Reverse Proxy가 있음

 

Forward Proxy

 포워드 프록시란, 가장 일반적인 프록시 서버 유형으로, 유저/클라이언트와 웹 서버 사이에 위치한다. (클라이언트 앞에 있다고 생각하는 게 좋다.) 사용자의 요청을 웹 서버로 직접 보내지 않고, 사용자를 대신하여 Request를 전달하며 사용자의 신원을 숨긴다. 포워드 프록시는 Response를 검사하고, 승인된 경우 사용자에게 다시 전달한다. 

 

 작동 과정을 좀 더 자세히 살펴보도록 하자.

 

How Does a Forward Proxy Work

① Client Request

 - 클라이언트가 인터넷상의 Resource에 접근하기 원할 때, 포워드 프록시에 Request를 보낸다. 

 

② Proxy Request

- 포워드 프록시는 클라이언트를 대신하여 웹 서버에 Request를 보낸다. 이 때, Proxy의 IP 주소를 사용하여 클라이언트의 IP 주소를 숨긴다. (IP 은닉)

 

③ Proxy Evaluation

- 포워드 프록시는 Request를 받고, 사전에 설정된 규칙(preset rule)에 따라 평가한다. 규칙에는 접근제어 및 콘텐츠 필터링이 포함됐다고 보면 된다. Request가 승인되면 다음 단계로 진행하고, 그렇지 않으면 클라이언트에게 오류 메시지를 보낸다.

 

④ Server Response

- 요청된 Resource가 있는 서버가 프록시의 요청에 Response한다. 단, 서버는 Request가 클라이언트가 아닌 프록시로부터 온 것으로 인식한다.

 

⑤ Proxy Forwarding

- 포워드 프록시는 서버의 Request를 받고, 클라이언트에게 다시 전달한다. 단, 여기서 클라이언트는 Response가 서버로부터 직접온 것처럼 보게 된다.

 

 

Forward Proxy 사용의 이점

 

1. 인터넷 트래픽 관리

- 포워드 프록시는 인터넷 트래픽을 보다 효율적으로 관리할 수 있게끔 도와준다. 자주 접속하는 웹 페이지를 캐싱하여 대역폭 사용을 줄이고, 로딩 시간을 개선하는 것이 대표적인 예이다.

 

2. 보안

- 포워드 프록시는 네트워크와 인터넷 사이에 추가 보안 계층을 추가한다. 악성 웹 사이트 접근을 차단하여 맬웨어 감염의 위험을 줄일 수도 있다.

 예) 학교는 포워드 프록시를 사용하여 학생들이 부적절한 웹 사이트에 접근하는 것을 막는다.

 

3. 익명성

- 위 동작과정에서 보았듯, 포워드 프록시는 클라이언트의 IP 주소를 숨길 수 있다. (익명성 제공) 이는 사용자의 브라우저 활동을 비공개로 유지하고자 할 때 유용하다. 예를 들어, 인터넷 검열이 있는 지역에서 일하는 기자가 차단된 웹사이트 접근하기 위해 포워드 프록시를 사용할 수 있다. (Bypass browsing restrictions)

 

4. Load Balancing (부하 분산)

- 포워드 프록시는 라운드 로빈 기법을 사용하여 네트워크 트래픽을 여러 기기에 균등하게 분배할 수 있다. 즉, 단일 서버가 병목현상에 빠지는 것을 방지한다. 이는 웹 트래픽이 많은 기업에 특히 유용하다. 예를 들어, 블랙 프라이데이같이 많은 트래픽이 발생하는 이벤트 동안에 부하를 분산하기 위해 포워드 프록시를 활용한다.

 

Reverse Proxy

 앞서 Forward Proxy에 대해 다루었다. Proxy의 또 다른 종류로 Reverse Proxy(이하 리버스 프록시)가 존재한다. 어떤게 다를까? 리버스 프록시는 웹 서버 앞에 위치하여 클라이언트의 Request를 처리하는 서버이다. 포워드 프록시는 클라이언트 앞에 위치한다. 클라이언트가 웹 서버에 Request를 보낼 때, 리버스 프록시 서버가 Network Edge에서 그 Request를 가로챈다. 그런 다음, 리버스 프록시 서버가 원본 서버에 Request를 보내고 Response를 받는다.

 

How Does a Reverse Proxy Work

① Client Request

 - 클라이언트가 Request를 보내고, Reverse Proxy가 이 Request를 가로챈다.

 

② Proxy Request

- 리버스 프록시가 클라이언트로부터 받은 Request를 서버로 전달한다. 리버스 프록시는 서버와 통신하지 않고도 캐시에 있는 파일에 대한 요청을 직접 응답할 수록 구성되어 있기도 하다.

 

③ Server Response

- 서버는 방화벽을 통해 리버스 프록시에 Response를 보낸다.

 

④ Proxy Forwarding

- 리버스 프록시는 서버의 Request를 받고, 클라이언트에게 Response 전달한다. 

 

 

Reverse Proxy 사용의 이점

1. 공격으로부터 보호

- 리버스 프록시를 사용하면 웹 사이트 또는 서비스에서 원본 서버의 IP 주소를 공개할 필요가 없다. 이로 인해 공격자가 DDoS 공격과 같은 표적 공격을 활용하기가 훨씬 더 어려워진다.(공격자는 CDN과 같은 리버스 프록시만 대상으로 지정할 수 있다.)


2. 전역 서버 부하 분산 (GSLB)

- 웹 사이트는 전 세계 여러 서버에 분산될 수 있으며, 리버스 프록시는 클라이언트를 지리적으로 가장 가까운 서버로 보낸다. 그러면 Request와 Response가 이동해야 하는 거리가 줄어들어 로드 시간이 최소화된다.


3. 캐싱

- 리버스 프록시도 콘텐츠를 캐시할 수 있으므로 성능이 향상된다. 예를 들어, 파리에 있는 사용자가 로스앤젤레스에 있는 웹 서버가 있는 역방향 프록시 웹 사이트를 방문하는 경우, 사용자는 실제로 파리에 있는 로컬 역방향 프록시 서버에 연결할 수 있다. 그러면 이 서버는 LA에 있는 원본 서버와 통신해야 한다. 프록시 서버는 그런 다음 응답 데이터를 캐시할 수 있다.


4. SSL 암호화

- 각 클라이언트에 대한 SSL(또는 TLS) 통신의 암호화 및 암호 해독은 원본 서버의 경우에 계산 비용이 많이 들 수 있다. 리버스 프록시는 들어오는 모든 요청을 해독하고 나가는 모든 응답을 암호화하여 원본 서버의 귀중한 리소스를 확보하도록 구성할 수 있다.

 

Forward Proxy와 Reverse Proxy의 차이?

 미묘하지만 약간의 차이가 있다. 

 포워드 프록시는 클라이언트 앞에 위치하며, 원본 서버가 특정 클라이언트와 직접 통신하지 못하도록 한다.

 리버스 프록시는 원본 서버 앞에 위치하며, 어떤 클라이언트도 원본 서버와 직접 통신하지 못하도록 한다.

 

 

 

 

참고 링크

https://www.zscaler.com/resources/security-terms-glossary/what-is-reverse-proxy

https://www.cloudflare.com/ko-kr/learning/cdn/glossary/reverse-proxy/

https://www.zscaler.com/resources/security-terms-glossary/what-is-forward-proxy

https://kemptechnologies.com/blog/forward-proxy-vs.-reverse-proxy-differences-and-similarities

 

 

 

 

'공부 > Web' 카테고리의 다른 글

HTTP의 특성과 Cookie, 간략히  (0) 2024.04.30
웹 성능 개선과 HTTP Cache  (0) 2024.04.30
CORS(Cross-Origin Resource Sharing)와 동작 시나리오  (0) 2024.04.28
Load Balancer와 Auto Scaling  (1) 2024.04.26
REST API와 GraphQL  (0) 2024.04.23

BELATED ARTICLES

more