back-end/🐾 삼냥이즈 기술노트

[삼냥이즈 기술노트] Proxy

삼냥이즈 기술 블로그 2026. 3. 26. 16:05

이전 글에서는 DNS가 도메인을 IP로 변환하는 과정을 정리하였다.

실제 웹 요청은 DNS 이후에도 여러 단계를 거친다.

클라우드 플레어의 작동 방식을 더 잘 이해하기 위해 Proxy와 Reverse Proxy에 대해 정리해 보았다.


Proxy

Proxy는 대리 서버라는 뜻이다. 일반적으로 Proxy 서버라고 하면 정방향 Proxy를 의미한다.

Proxy 서버의 경우 일반적으로 클라이언트 바로 다음에 위치한다

  1. Client
  2. Forward Proxy
  3. Internet
  4. Server

즉 클라이언트가 서버로 보내는 요청을 인터넷을 타기 전에 가로챈다.

이렇게 가로채는 이유는 다음과 같다

  • 익명성 - 서버는 접속한 클라이언트를 알 수 없다. 클라이언트 대신 Forward Proxy가 서버가 대신 보냈기 때문.
  • 캐싱 - 같은 네트워크에 있는 여러 사용자가 동일한 리소스를 요청할 경우 Forward Proxy 서버가 해당 응답을 캐싱하여 서버 요청을 줄일 수 있다.
  • 접근 제어 - Forward Proxy 서버가 위임해 보내는 요청의 경우 Forward Proxy 서버가 자체적으로 접근할 수 없는 사이트를 접속하려 하는지 필터링하고 막을 수 있다.

즉 특정 사이트로의 접속을 차단하고, 접속 로그를 기록하며, 캐싱을 통해 트래픽을 절약할 수 있다.

 

어렸을 적 학교 컴퓨터실에서 게임 사이트에 접속하려고 하면 접속이 불가능하게 막혔는데 이것은 학교 컴퓨터실 PC에서 보낸 접속 요청이 가로채진 후 Forward Proxy 서버로 전송되기 때문이다. Forward Proxy서버에선 해당 요청을 거부할 뿐 아니라 로깅도 할 수 있다.


Reverse Proxy

Reverse Proxy는 Forward Proxy와 반대로 서버에 들어가기 직전에 거치는 Proxy 서버이다. 일반 Proxy가 [유저 -> Proxy server -> 인터넷 -> 서버] 였다면 Reverse Proxy는 [유저 -> 인터넷 -> Reverse Proxy -> 서버] 순서인 것이다. 단순히 순서만 바꾼 것이 아니라 기능도 반대이다. 정방향 Proxy가 유저의 요청을 클라이언트 대신 서버로 보내 유저의 IP를 감췄다면, Reverse Proxy는 서버 대신 요청을 받음으로서 서버의 IP를 클라이언트가 알지 못하게 하는 역할이다.

앞서 언급한대로 Reverse Proxy 서버가 있는 경우 요청 순서는 다음과 같다

  1. Client
  2. Internet
  3. Reverse Proxy
  4. Server

즉 클라이언트가 서버의 IP를 모르게 할 수 있다. 클라이언트가 아는 것은 서버의 IP가 아니라 Reverse Proxy서버의 IP이고, Reverse Proxy 서버가 받은 요청을 직접 진짜 서버에 전달한다. 응답도 마찬가지로 Reverse Proxy 서버가 받아서 클라이언트에게 전달해준다. 얼핏 보면 의미 없어 보이지만 Reverse Proxy를 진짜 서버 앞에 두는 것은 매우 일반적이고 흔한 구조이다. 그 이유는 다음과 같다.

  • 서버 보호 - Reverse Proxy를 사용하면 실제 서버를 외부에 노출하지 않는다. Origin 서버의 IP를 숨기면 디도스 공격이나 봇들의 무작위 요청이 Origin 서버가 아니라 Reverse Proxy서버로 향하게 된다. 그리고 Reverse Proxy 역할을 하는 서비스들(삼냥이즈의 경우 Cloudflare)은 이런 공격이나 봇들의 요청을 방어하고 차단하는 기능도 마련되어 있다. 그 외 WAF(Web Application Firewall)이나 Rate Limiting 등의 기능도 제공할 수 있다
  • 로드밸런싱 - 여러 서버로 트래픽을 분산하는 역할을 할 수 있다. 로드 밸런서로도 사용 가능하다는 뜻
  • TLS Termination - HTTPS는 HTTP가 TLS를 이용해 보안이 강화된 것이다. HTTPS로 요청이 들어오면 Origin 서버는 TLS를 처리해줘야 한다. Reverse Proxy가 TLS Termination 기능을 할 수 있다는 것은 말 그대로 HTTPS를 Reverse Proxy에서 처리해버리고 그 이후부턴 HTTP로 통신할 수 있게 된다는 뜻이다. 즉 Reverse Proxy서버를 두고 HTTPS를 처리하게 하면 Origin 서버는 HTTP 요청만 처리할 수 있으면 된다.
  • 캐싱 - 앞서 설명한 것 처럼 서버 응답을 캐싱하여 성능을 향상시킬 수 있다

일반적인 요청 흐름

서비스 구조는 다음과 같이 구성될 수 있다

  1. Client
  2. Cloundflare(Reverse Proxy)
  3. Apache Reverse Proxy
  4. Application Server

여기서 Cloudflare는 origin 서버 밖에, Apache Reverse Proxy는 origin 서버 안에 위치한다.

Reverse Proxy 서버를 두개 뒀는데 Cloudflare에서는 서버 보호 역할과 로드 밸런싱을 처리하고, Apache Reverse Proxy 서버는 TLS Termination을 처리한다.

'back-end > 🐾 삼냥이즈 기술노트' 카테고리의 다른 글

[삼냥이즈 기술노트] DNS  (0) 2026.03.25
[삼냥이즈 기술노트] MVC 패턴  (0) 2026.03.20