Nginx로 보안 리버스 프록시를 구축한 방법

발행: (2026년 3월 11일 오후 03:54 GMT+9)
6 분 소요
원문: Dev.to

Source: Dev.to

소개

역방향 프록시는 현대 웹 인프라에서 가장 강력한 구성 요소 중 하나입니다. 이는 사용자와 백엔드 서비스 사이에 위치하여 성능을 향상하고 보안 정책을 적용하며 트래픽을 제어할 수 있는 게이트키퍼 역할을 합니다.

이 가이드를 마치면 애플리케이션 앞에 배포할 수 있는 실용적인 설정을 갖추게 됩니다.

Reverse Proxy Architecture

높은 수준에서 리버스 프록시는 클라이언트와 백엔드 서버 사이에 위치합니다. 사용자가 애플리케이션 서버에 직접 접근하는 대신, 모든 요청이 먼저 프록시를 거칩니다.

Client


Reverse Proxy (Nginx)


Application Server

Benefits

  • 내부 인프라 숨기기
  • 보안 정책 중앙 집중화
  • TLS를 한 곳에서 종료
  • 트래픽 필터링 및 모니터링 추가

Example Scenario

Internet


Nginx Reverse Proxy
   ├── API Server (Node.js)
   ├── Web App (React / Next.js)
   └── Admin Panel

Simple Reverse Proxy Configuration

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_app;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

What this does

  • Accepts HTTP requests
  • Forwards them to the backend application
  • Preserves client IP information

속도 제한

공용 서비스는 종종 봇 트래픽, 스캐너 및 무차별 대입 공격에 직면합니다. 속도 제한은 클라이언트가 보낼 수 있는 요청 수를 제한함으로써 애플리케이션을 보호하는 데 도움이 됩니다.

속도 제한 영역 정의

http {
    limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
}

서버 블록에서 속도 제한 적용

location /api/ {
    limit_req zone=api_limit burst=20 nodelay;
    proxy_pass http://backend_api;
}

구성 세부 사항

  • 제한: 초당 10 요청
  • 버스트: 짧은 급증 허용
  • 보호: API 엔드포인트를 남용으로부터 방어

속도 제한은 자동화된 스캐너와 무차별 대입 공격에 특히 효과적입니다.

보안 헤더

보안 헤더를 추가하면 브라우저와 사용자를 일반적인 웹 취약점으로부터 보호할 수 있습니다. Nginx에서 직접 설정할 수 있습니다.

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "no-referrer-when-downgrade";
add_header Content-Security-Policy "default-src 'self'";

이 헤더들은 다음과 같은 공격을 방어하는 데 도움이 됩니다:

  • 클릭재킹
  • 콘텐츠 타입 스니핑
  • 교차 사이트 스크립팅 (XSS)
  • 데이터 유출

클라이언트 측 보호를 한층 강화하는 추가적인 레이어를 제공합니다.

로깅

로깅은 가시성과 사고 대응에 필수적입니다.

기본 로그 구성

access_log /var/log/nginx/access.log;
error_log  /var/log/nginx/error.log;

사용자 정의 로그 형식

log_format security_log '$remote_addr - $request - $status - $http_user_agent';
access_log /var/log/nginx/security.log security_log;

로그에서 유용한 데이터

  • 클라이언트 IP
  • 요청 경로
  • HTTP 상태 코드
  • 사용자 에이전트
  • 요청 타이밍

로그는 종종 자동 스캔 및 공격 시도가 엔드포인트에 도달하는 것을 드러냅니다.

추가 모범 사례

  • HTTPS를 TLS와 함께 사용하도록 활성화

  • 불필요한 HTTP 메서드 비활성화

  • 서버 버전 정보 숨기기

    server_tokens off;
  • 관리자 엔드포인트 제한

  • 업스트림 상태 검사 사용

이러한 관행은 역방향 프록시를 공격으로부터 더욱 견고하게 보호합니다.

결론

리버스 프록시는 단순한 트래픽 라우터 그 이상입니다—애플리케이션 앞에 강력한 보안 레이어로 작동할 수 있습니다. 몇 가지 Nginx 설정만으로 다음을 구현할 수 있습니다:

  • 트래픽 제어
  • 보안 헤더
  • 요청 로깅
  • 기본 공격 완화

이러한 보호 조치는 자동화된 공격에 대한 노출을 크게 줄여줍니다. 바로 사용할 수 있는 보안 레이어를 원한다면 SafeLine WAF와 같은 프로젝트가 이러한 보호 기능을 바로 제공합니다.

0 조회
Back to Blog

관련 글

더 보기 »

트라비고

Gemini와 함께 말하는 속도만큼 빠르게 여행하세요! 라이브 에이전트가 몰입형 스토리텔링 및 3D 내비게이션과 만나는 곳. 이 프로젝트는 Gemini Live Ag...에 진입하기 위해 만들어졌습니다.