cs

Proxy (Reverse Proxy / Forward Proxy)

sihanni 2025. 6. 23. 20:10

1.  프록시 (Proxy)

등장 배경

초기의 인터넷은 단순히 사용자 -> 서버 로 직접 연결하는 단순한 구조였다.

하지만 서비스가 커지면서 여러 문제가 발생하게 되는데..

  1. 보안 문제: 내부 서버 IP나 네트워크 구조가 외부에 그대로 노출
  2. 트래픽 과부하: 모든 요청을 한 서버가 처리하다보니 성능 저하
  3. 중복 요청 낭비: 자주 같은 이미지/데이터에 대한 비효율적인 요청
  4. 접근 제한 필요: 특정 사용자/사이트 차단, 또는 인증 필요
  5. 로깅/모니터링 부족: 누가 뭘 요청하는지 전체 흐름을 보기 어려움

이러한 문제를 해결하기 위해 중간에서 요청을 대신 처리하고 제어할 수 있는 프록시가 필요해지게 되었다.

 

프록시는 보안, 성능, 제어, 확장성의 문제를 해결하기 위해 "중간에서 대신 요청하고 응답을 제어하는 중계자" 역할로 등장했다.

그리고 현대의 프록시는 인증 처리, SSL 종료, 콘텐츠 필터링, API 게이트웨이의 역할도 하며 웹 아키텍처의 핵심 구성 요소 중 하나이다.

 

2. 포워드 프록시 (Forward Proxy)

 

 

정방향 프록시는 클라이언트 시스템 그룹 앞에 위치하는 서버이다.

인터넷 사이트 및 서비스에 요청을하면 (포워드)프록시 서버가 이러한 요청을 가로채고 중개자처럼 해당 클라이언트를 대신하여 웹 서버와 통신한다.

 

"클라이언트 앞에서 원본 서버가 해당 클라이언트와 직접 통신하지 못하도록 하는 것"

 

일반 인터넷 통신 (프록시 X)

유저의 디바이스(A)가 최종 요청을 처리하는 서버 컴퓨터(C)에 직접 연결하고 클라이언트는 원본 서버에 요청을 보내고 원본 서버가 클라이언트에 응답한다.

 

포워드 프록시 사용

유저의 디바이스(A)가 대신 포워드 프록시(B)에 요청을 보내고 B가 요청을 C로 전달하게 된다.

그리고 C가 B에게 응답을 보내고 B가 응답을 A에게 다시 전달한다.

 

목적

  1. 기업 내부망에서 직원 인터넷 사용 제어
    • 회사에서 모든 직원이 포워드 프록시를 통해서만 외부 인터넷에 접속하도록 설정
      • 특정 사이트(예: 유튜브, 페이스북 등) 접근 차단
      • 웹 필터링 및 로그 기록
      • 보안 및 개인정보 유출 방지
  2. 학교/ 공공기관에서 인터넷 사용 제한 (웹 보안)
    • 학교에서 학생들이 유해한 웹사이트에 접속 못하게 차단
    • 공공도서관에서 사용자가 허용된 사이트만 접근할 수 있게 설정
    • 승인되지 않은 사이트에 대한 방문을 차단하고 응답에서 악의적이거나 부적절한 콘텐츠를 필터링
  3. VPN/우회 서비스 제공
    • 사용자가 국가나 기관에 의해 차단된 사이트에 접근하고 싶을 때 프록시를 통해 우회 접속
    • 정부, 학교, 기타 조직에서는 방화벽을 사용해 사용자에게 인터넷의 제한된 권한을 부여한다. 이 때 포워드프록시를 사용하면 사용자가 방문하는 사이트에 직접 연결하지 않고 프록시에 연결할 수 있으므로 제한을 피할 수 있다.
목적 설명
접근 제어 사용자에게 특정 도메인/포트를 차단함 (SNS, 불법 콘텐츠)
보안 강화 악성 사이트 접근 차단, 내부 IP 숨기기
로깅 및 감시 누가 어떤 사이트를 접속했는지 기록 가능
캐싱 반복되는 요청은 프록시가 캐싱하여 속도 향상 및 트래픽 절약
우회 접속 IP우회, 검열 회피용

 

 

3. 리버스 프록시 (Reverse Proxy)

리버스 프록시는 하나 이상의 웹 서버 앞에 위치하여 클라이언트의 요청을 가로채는 서버이다.

리버스 프록시를 사용하면 클라이언트가  웹 사이트의 원본 서버에 요청을 보낼 때 리버스 프록시 서버가 네트워크 엣지에서 해당 요청을 가로챈다. 그런 다음 리버스 프록시 서버가 원본 서버에 요청을 보내고 응답을 받는다.

 

"원본 서버 앞에 위치하며 어떤 클라이언트도 원본 서버와 직접 통신하지 못 하도록 하는 것"

 

일반 인터넷 통신 (프록시 X)

D의 모든 요청은 F로 직접 이동하고, F는 D에게 직접 응답을 보낸다.

 

리버스 프록시 사용

D의 모든 요청이 E로 직접 이동하고, E는 요청을 F에게 보내며 F로부터 응답을 받는다.

E는 그런 다음 적절한 응답을 D에게 전달한다.

 

목적

 

  1. 보안 강화 ( 실제 서버를 외부에 노출하지 않음으로써 보안을 확보할 수 있음 ) 
    • 클라이언트는 백엔드 서버의 실제 IP, 포트, 구조 등을 알 수 없다.
    • DDos 공격, 취약점 스캐닝 등으로부터 백엔드 서버를 보호할 수 있다.
    • 인증, 권한 체크 등도 리버스 프록시에서 선처리 가능
    • 원본 서버의 IP주소를 모르니 공격자는 Cloudflare나 CloudFront의 CDN과 같은 리버스 프록시만 대상으로 지정할 수 있다.
  2. 로드밸런싱 (1000명의 요청을 서버 3대에 고르게 부하 분산) 
    • 리버스 프록시는 들어오는 요청을 여러 서버에 분산시킬 수 있다.
    • 서버 과부하 방지, 트래픽 분산, 고가용성확보에 매우 유용하다.
  3. 전역 서버 부하 분산
    • 웹 사이트는 전 세계 여러 서버에 분산될 수 있으며, 리버스 프록시는 클라이언트를 지리적으로 가장 가까운 서버로 보낸다.
    • 요청과 응답이 이동해야 하는 거리가 줄어들어 로드 시간이 최소화된다.
  4. SSL 종료 (TLS terminiation)
    • HTTPS 트래픽을 프록시에서 암호 해제(복호화)하고, 내부로는 HTTP로 전달할 수 있다.
    • 백엔드 서버에서는 HTTPS 인증서를 따로 설정할 필요가 없다.
  5. 캐싱 및 응답속도 향상
    • 자주 요청되는 정적 파일 (html, css, js 등)을 캐시하여 빠르게 응답 가능
    • 백엔드 서버의 부하를 줄이고 응답 속도 개선
  6. 서비스 통합 및 URL 라우팅
    • 다양한 백엔드 서비스들을 하나의 도메인 아래에 구성 가능 
      • example.com/api → API 서버
        example.com/images → 이미지 서버
        example.com → 프론트엔드 정적 파일 
         
  •  

참고

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

 

'cs' 카테고리의 다른 글

[cs] PNG와 구성요소  (4) 2025.07.29
[cs] 2. 네트워크 (기초)  (0) 2025.07.12
라이프 사이클 (LifeCycle)에 대한 이해  (0) 2025.06.23
[기억 장치] 디스크와 메모리  (0) 2025.06.08
[WEB] REST, RESTful API  (1) 2025.06.04