Nginx 설정 생성기
리버스 프록시, SSL, 정적 파일 서빙 등 Nginx 설정 파일을 UI로 간편하게 생성합니다.
서버 기본 설정
SSL / TLS 설정
Location 블록
로깅
성능
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 공식 가이드