[Network] 프록시

do_it·2025년 9월 18일

network

목록 보기
12/12

1. 프록시(Proxy)란?

-> 서버 ↔ 클라이언트 대리인 역할

  • 정의: 클라이언트와 서버 사이에서 중간자 역할을 하는 서버 또는 서비스
  • 클라이언트는 직접 서버와 통신하지 않고, 프록시를 통해 요청을 전달하고 응답을 받음

2. 프록시 서버의 주요 기능

1. 보안 강화

  • 내부 네트워크 보호
    기업이나 기관은 내부 네트워크 IP를 외부에 직접 노출하지 않고, 프록시 서버를 통해 간접적으로 통신함
    외부에서 직접 내부 서버에 접근하지 못하게 함으로써 해킹위험을 줄임
  • 트래픽 모니터링 및 기록
    관리자 입장에서 누가 언제 어떤 사이트를 접속했는지를 로깅할 수 있어, 보안 사고 발생 시 추적이 가능함

2. 익명성 및 IP 우회

  • 사용자 IP 숨김
    사용자의 실제 IP를 숨기고, 프록시 서버의 IP로 대체해서 외부에 노출하지 않음
  • 지역 제한 콘텐츠 우회
    특정 국가에서만 접속 가능한 웹사이트/서비스를 해당 국가에 위치한 프록시 서버를 통해 우회 가능

3. 접근 제어 및 정책 관리

  • 특정 사이트 차단
    회사나 학교에서 특정 웹 사이트를 프록시를 통해 차단
  • 사용자별 정책 적용
    사용자, 부서, 시간대에 따라 접속 권한이나 대역폭 제한을 다르게 설정할 수 있음

4. 속도 향상 및 대역폭 절약

  • 캐싱 기능
    자주 접속하는 사이트나 파일을 프록시 서버에 캐시하여 다음 요청 시 더 빠르게 응답할 수 있음
  • 대역폭 절약
    캐싱을 통해 불필요한 외부 트래픽을 줄임으로써 인터넷 회선을 보다 효율적으로 사용하게 됨

5. 부하 분산 및 가용성 향상 (Reverse Proxy)

  • 서버 앞단에서 요청 분산
    많은 사용자가 동시에 요청할 경우, 프록시 서버가 요청을 여러 백엔드 서버에 분산해서 처리
  • 장애 대응
    서버가 다운되면, 프록시 서버가 자동으로 다른 서버로 요청을 넘기거나 오류 메세지를 처리하여 사용자 경험 향상

2. 프록시의 종류

구분위치주요 목적예시
Forward Proxy클라이언트 앞단클라이언트 보호, 캐싱, 접근 제어회사 내부망, 검열 우회
Reverse Proxy서버 앞단서버 보호, 로드밸런싱, SSL 처리, 캐싱NGINX, HAProxy, CDN

[+] 오픈 프록시 (Open Proxy)
누구나 사용할 수 있는 공개된 프록시 서버
익명성은 제공하지만, 보안 위험이 큼

(1) Forward Proxy (정방향 프록시)

  • 클라이언트 앞단에 위치
  • 클라이언트가 인터넷에 직접 접근하지 않고, 프록시가 대신 요청
  • 주요 목적:
    • 캐싱(자주 요청되는 리소스를 저장해 빠른 응답 제공)
    • 접근 제어(특정 사이트 차단, 사내망 관리)
    • 익명성 제공(클라이언트의 IP를 서버에 숨김)

[e.g.] 회사 내부 PC → Forward Proxy → 외부 인터넷


(2) Reverse Proxy (역방향 프록시)

  • 서버 앞단에 위치
  • 클라이언트는 서버에 직접 요청하는 줄 알지만, 실제로는 프록시가 요청을 받아 서버로 전달
  • L7(애플리케이션 레벨) 로드 밸런서는 사실상 리버스 프록시 기능을 포함
    • 클라이언트는 LB가 서버인 것처럼 요청
    • LB가 요청을 분석하고, 적절한 서버로 전달
    • SSL 종료, HTTP 헤더 수정, 캐싱 등 가능
  • 리버스 프록시만 단독으로 두면 트래픽 분산 없이 요청을 특정 서버로 전달만 함
  • 주요 목적:
    • 로드밸런싱 (여러 서버에 요청 분산)
    • SSL 종료(HTTPS 암호화 처리)
    • 보안 강화(서버의 실제 IP 숨기기, 방화벽 역할)
    • 캐싱을 통해 서버 부하 경감
  • 리버스 프록시는 트래픽 중계 / 보안 중심
    로드 밸런서는 서버 간 부하 분산 중심
    L7 LB는 리버스 프록시 역할 포함

[e.g.] Nginx, HAProxy


3.LB & Proxy

항목리버스 프록시로드 밸런서
🛡️ 보안 강화클라이언트와 백엔드 서버 사이의 완충 지대 역할기본적으로 보안 목적은 아님 (WAF와 함께 쓰이면 가능)
⚡ 캐싱 지원정적 콘텐츠를 캐시하여 빠른 응답 제공일반적으로 캐싱은 하지 않음
🔐 SSL 종료SSL을 프록시에서 종료(복호화)하고, 내부는 HTTP 통신 가능SSL 종료 기능 포함 가능 (종류에 따라 다름)
↪️ 트래픽 분기요청 URL/도메인에 따라 다른 백엔드로 라우팅 가능 (예: api.example.com vs www.example.com)보통은 단순한 부하 분산 (URL별 라우팅은 일부 지원)
⚖️ 부하 분산기본 목적은 아님, 단 일부 구현체는 분산 기능 포함트래픽을 서버들에 분산 (Round-robin, Least connection 등)
👁️‍🗨️ 클라이언트 IP 표시기본적으로 클라이언트 IP 숨김, X-Forwarded-For 헤더로 전달 가능마찬가지로 원 IP 숨겨짐, 헤더 전달 필요

[클라이언트] -- [ 포워드 프록시 ] — [ LB / 리버스 프록시] — [서버]

리버스 프록시

: 클라이언트 요청을 받아 백엔드 서버로 전달하고 응답을 다시 클라이언트에 전달하는 중간 서버

  • 목적 : 보안, 캐싱, SSL 처리, 응답 속도 향상 등

로드 밸런서

: 클라이언트 요청을 여러 서버에 분산시켜 처리하는 장치 또는 서비스

  • 목적: 서버 부하 분산, 고가용성 확보, 성능 향상

클라이언트 → 로드 밸런서 → 리버스 프록시 → 백엔드 서버

항목리버스 프록시로드 밸런서
주 역할클라이언트와 서버 사이 중계요청을 여러 서버로 분산
주 목적보안, 프록싱, 캐싱 등부하 분산, 장애 대응
서버 수1개 이상 가능 (하지만 1개여도 OK)보통 여러 서버 필요
예시Nginx, Apache (as reverse proxy)AWS ELB, HAProxy, Nginx (as load balancer)

0개의 댓글