T도구모음

Nginx 설정 생성기

리버스 프록시, SSL, 정적 파일 서빙 등 Nginx 설정 파일을 UI로 간편하게 생성합니다.

서버 기본 설정

SSL / TLS 설정

Location 블록

Location #1

로깅

성능

nginx.conf

server {
    listen 80;
    listen [::]:80;

    server_name example.com;

    # 로그
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    # 성능
    client_max_body_size 10m;
    keepalive_timeout 65;

    # Gzip 압축
    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;

    location / {
        root /var/www/html;
        index index.html index.htm;
        try_files $uri $uri/ =404;
    }

}

Nginx 설정 생성기 — 웹 서버 아키텍처의 중심

Nginx는 Igor Sysoev가 2004년 공개한 이벤트 기반 비동기 웹 서버로, 전 세계 웹 사이트의 약 34%(W3Techs 2024 기준)가 사용합니다. 리버스 프록시, 로드밸런서, 정적 파일 서빙, SSL/TLS 종료, HTTP 캐시 등 현대 인프라의 프론트 계층 역할을 담당합니다. 이 도구는server, location, upstream 블록을 GUI로 구성하여 올바른 nginx.conf를 즉시 생성합니다.

핵심 디렉티브 해설

  • server 블록 — 가상 호스트 단위로 listen(포트), server_name(도메인)을 선언합니다.
  • location 블록 — URI 패턴별로 proxy_pass(리버스 프록시), root/alias(정적 파일), return(리다이렉트) 등을 지정합니다.
  • upstream 블록 — 여러 백엔드 서버를 묶어 라운드 로빈, 가중치, IP 해시 등의 부하 분산 알고리즘을 적용합니다.

리버스 프록시 + SSL 종료 예시

server {
    listen 443 ssl http2;
    server_name api.example.com;

    ssl_certificate     /etc/letsencrypt/live/api.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/api.example.com/privkey.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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;
    }
}

Rate Limiting 설정

# http 블록에 선언
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;

# server/location 블록에서 적용
location /api/ {
    limit_req zone=api burst=20 nodelay;
    proxy_pass http://backend;
}

SPA (React/Vue) + Gzip 설정

server {
    listen 80;
    root /var/www/html;
    index index.html;

    gzip on;
    gzip_types text/css application/javascript application/json image/svg+xml;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

아키텍처 시나리오별 Nginx 구성

소규모(단일 앱): Nginx를 리버스 프록시로 앞에 두고 Node.js/Python 앱 하나에proxy_pass합니다. Let's Encrypt + Certbot으로 무료 SSL을 적용합니다.

중규모(마이크로서비스 3~10개): upstream 블록으로 서비스별 백엔드 풀을 구성하고, location /api/v1/users 등 경로 기반 라우팅을 합니다. WebSocket 서비스에는 proxy_http_version 1.1과 Upgrade 헤더를 설정합니다.

대규모(글로벌 트래픽): Nginx Plus 또는 Kubernetes Ingress Controller(NGINX Inc.)를 사용하여 active health check, 동적 업스트림 재구성, JWT 검증, OpenTelemetry 트레이싱을 적용합니다. CDN(CloudFront, Cloudflare) 뒤에 Nginx를 오리진 서버로 배치합니다.

보안 베스트 프랙티스

  • TLSv1.0/1.1은 비활성화하세요 — PCI DSS 3.2 이상에서 금지되었습니다. ssl_protocols TLSv1.2 TLSv1.3;만 허용하세요.
  • HSTS 헤더(Strict-Transport-Security)를 설정하여 브라우저가 HTTPS만 사용하도록 강제하세요.
  • server_tokens off;로 Nginx 버전 정보 노출을 차단하세요.
  • 보안 헤더(X-Frame-Options, X-Content-Type-Options, CSP)를 추가하여 클릭재킹, MIME sniffing, XSS를 방지하세요.
  • client_max_body_size를 적절히 설정하여 대용량 업로드 DoS를 방지하세요.

관련 도구

SSL 인증서 키가 필요하다면 RSA 키 생성기를, 백엔드 서비스를 데몬으로 등록하려면 Systemd 서비스 생성기를, 서버 접근 제어에는 방화벽 규칙 생성기를 활용하세요.

참고 자료

  • Nginx 공식 문서 — nginx.org/en/docs/
  • Mozilla SSL Configuration Generator — ssl-config.mozilla.org
  • OWASP Secure Headers Project
  • Let's Encrypt + Certbot 공식 가이드

자주 묻는 질문

관련 도구