매일 공부/Backend CS

[매일메일] 리버스 프록시와 포워드 프록시

개발하는 동그리 2025. 4. 11. 11:07
리버스 프록시 (Reverse Proxy) 란?
  • 서버에 가까운 프록시
    클라이언트는 실제 서버가 아닌, 리버스 프록시에게 요청하고 리버스 프록시가 알맞은 백엔드 서버에 요청을 전달
  • 리버스 프록시의 핵심 기능 중 하나는 로드 밸런싱
    다수의 백엔드 서버로 트래픽을 분산시켜 서버 과부하를 방지하고, 서비스의 고가용성을 유지할 수 있습니다.
    또한 외부에서 직접 백엔드 서버에 접근하지 못하게 하여 DDos 공격이나 해킹 시도로부터 서버를 보호할 수 있습니다.
  • SSL 종료는 리버스 프록시의 중요한 기능
    SSL/TLS 암호화를 리버스 프록시에서 처리함으로써 백엔드 서버의 부담을 줄이고, 중앙에서 인증서를 관리할 수 있습니다.
  • 리버스 프록시는 캐싱 및 콘텐츠 최적화 기능을 통해 정적 콘텐츠를 캐싱하여 응답 속도를 향상하고 서버 부하를 줄일 수 있습니다.

 

주 용도
  • 로드 밸러싱
  • SSL 종료 처리 (HTTPS 처리)
  • 보안 강화 (내부 서버 IP 숨김)
  • 캐싱 처리로 속도 향상

 

대표 도구
  • Nginx
  • Apache HTTP Server (mod_proxy)
  • HAProxy
  • Traefik, Envoy 등

 

# 1. 백엔드 API 서버 로드밸런싱 정의
upstream backend_api {
    server 192.168.0.101:3000;
    server 192.168.0.102:3000;
    server 192.168.0.103:3000;
}

# 2. 서버 블록 정의
server {
    listen 80;
    server_name example.com;

    # 3. 정적 파일(root = dist 폴더)
    root /var/www/myapp/dist;
    index index.html;

    # 4. Gzip 압축 (선택사항)
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    gzip_min_length 1024;

    # 5. 정적 자산 처리
    location / {
        try_files $uri $uri/ /index.html;
    }

    # 6. API 요청 프록시 (로드밸런싱 적용)
    location /api/ {
        proxy_pass http://backend_api;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # 7. 인증 서버와 별도 분기 예시
    location /auth/ {
        proxy_pass http://192.168.0.200:4000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # 8. 캐시 제어 (선택사항)
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
        expires 7d;
        access_log off;
    }

    # 9. 기본 보안 헤더 (선택)
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";
}

 


 

포워드 프록시 (Forward Proxy) 란?
  • 사용자에 가까운 프록시
    사용자가 외부 서버에 직접 요청하지 않고 프록시 서버를 통해 요청
  • 회사 내부 네트워크에서 근무하는 직원이 외부 웹사이트에 접속하려고 할 때, 포워드 프록시 서버를 통해 요청이 전달됩니다. 
    이 과정에서 사용자의 실제 IP주소는 숨겨지고 프록시 서버의 IP 주소가 대신 사용됩니다.
  • 포워드 프록시의 핵심 기능 중 하나는 익명성 제공으로 사용자의 실제 IP를 숨김으로써 개인정보 보호와 보안 측면에서 큰 장점을 제공합니다.
  • 캐싱을 통해 네트워크 성능을 향상시킵니다. 자주 요청되는 웹 페이지나 파일을 프록시 서버에 저장해두면, 동일한 요청이 다시 들어올 떄 빠르게 응답할 수 있어 네트워크 대여폭을 절약할 수 있습니다.
  • 보안 강화 기능도 중요한 역할 중 하나입니다. 악성 웹사이트나 불법적인 콘텐츠에 대한 접근을 차단하여 네트워크 보안을 강화하고, 바이러스나 악성 코드의 유입을 예방할 수 있습니다.

 

주 용도
  • 인터넷 접속 제어 (차단 사이트 설정 등)
  • 사용자 익명성 보호
  • 캐싱을 통한 속도 향상
  • 보안 로그 기록

 

대표 도구
  • Squid
  • CCProxy, Privoxy, Shadowsocks, 서드파티 VPN 등