Nginx 구성 요약
Nginx 일반적인 구성 조각 빠른 참조표, 구성 코드 빠르게 검색 및 복사
작업 프로세스 수 자동 설정 (보통 CPU 코어 수와 동일)
worker_processes auto;
각 작업 프로세스의 최대 연결 수 설정
events {
worker_connections 1024;
}MIME 유형 구성 포함
include /etc/nginx/mime.types; default_type application/octet-stream;
효율적인 파일 전송 활성화
sendfile on; tcp_nopush on; tcp_nodelay on;
장기 연결 타임아웃 시간 설정
keepalive_timeout 65;
클라이언트 요청 본문 최대 크기 설정
client_max_body_size 100M;
Nginx 버전 번호 숨기기
server_tokens off;
기본 Server 블록 구성
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html;
}여러 도메인 구성
server_name example.com www.example.com;
와일드카드 도메인 구성
server_name *.example.com;
기본 서버 설정
listen 80 default_server;
IPv6 주소 감시
listen [::]:80;
루트 디렉토리 또는 별칭 설정
root /var/www/html; # 또는 alias 사용 alias /var/www/files/;
정확한 경로 매칭
location = /path {
# 정확한 매칭
}접두사 매칭 경로
location /api/ {
# 접두사 매칭
}정규 표현식 매칭
location ~ \.php$ {
# 정규 표현식 매칭 (대소문자 구분)
}대소문자 구분 없는 정규 표현식 매칭
location ~* \.\(jpg|jpeg|png|gif\)$ {
# 정규 표현식 매칭 (대소문자 구분 없음)
}우선 접두사 매칭 (정규 표현식보다 우선)
location ^~ /images/ {\n # 우선 접두사 매칭\n}파일 시도 순서 (SPA 애플리케이션에서 자주 사용)
location / {\n try_files $uri $uri/ /index.html;\n}내부 요청만 허용
location /internal/ {\n internal;\n}기본 역방향 프록시 구성
location /api/ {\n proxy_pass http://backend:3000/;\n}프록시 요청 헤더 설정
proxy_set_header Host $host;\nproxy_set_header X-Real-IP $remote_addr;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto $scheme;
WebSocket 프록시 구성
location /ws/ {\n proxy_pass http://backend:3000/;\n proxy_http_version 1.1;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection "upgrade";\n}상류 서버 그룹 정의
upstream backend {\n server 127.0.0.1:3000;\n server 127.0.0.1:3001;\n keepalive 32;\n}로드 밸런싱 구성
upstream backend {\n least_conn; # 또는 ip_hash;\n server 127.0.0.1:3000;\n server 127.0.0.1:3001;\n}프록시 타임아웃 설정
proxy_connect_timeout 60s;\nproxy_send_timeout 60s;\nproxy_read_timeout 60s;
프록시 버퍼 구성
proxy_buffering on;\nproxy_buffer_size 4k;\nproxy_buffers 8 4k;
기본 SSL 구성
server {\n listen 443 ssl http2;\n ssl_certificate /path/to/cert.pem;\n ssl_certificate_key /path/to/key.pem;\n}SSL 프로토콜 버전 설정
ssl_protocols TLSv1.2 TLSv1.3;
암호화 키 설정
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;\nssl_prefer_server_ciphers on;
SSL 세션 캐시
ssl_session_cache shared:SSL:10m;\nssl_session_timeout 1d;
HTTP를 HTTPS로 리디렉션
server {\n listen 80;\n server_name example.com;\n return 301 https://$server_name$request_uri;\n}HSTS 활성화
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
OCSP Stapling 활성화
ssl_stapling on;\nssl_stapling_verify on;\nresolver 8.8.8.8 8.8.4.4 valid=300s;
정적 리소스 캐시
location ~* \.\(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2\)$ {\n expires 30d;\n add_header Cache-Control "public, immutable";\n}캐시 비활성화
location /api/ {\n add_header Cache-Control "no-store, no-cache, must-revalidate";\n}프록시 캐시 구성
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g;\n\nlocation / {\n proxy_cache my_cache;\n proxy_cache_valid 200 1d;\n}ETag 활성화
etag on;
조건부 요청 활성화
if_modified_since before;
기본 Gzip 압축 구성
gzip on;\ngzip_vary on;\ngzip_min_length 1024;\ngzip_comp_level 6;
압축할 MIME 유형 설정
gzip_types text/plain text/css text/xml text/javascript application/javascript application/json application/xml;
프록시 요청에 압축 활성화
gzip_proxied any;
예측 압축 파일 활성화
gzip_static on;
CORS 크로스 도메인 구성
add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods "GET, POST, OPTIONS"; add_header Access-Control-Allow-Headers "DNT,User-Agent,X-Requested-With,Content-Type";
XSS 및 클릭 재난 방지
add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options nosniff; add_header X-Frame-Options SAMEORIGIN;
콘텐츠 보안 정책
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'";
요청 속도 제한
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
location /api/ {
limit_req zone=one burst=20 nodelay;
}숨김 파일 접근 금지
location ~ /\. {
deny all;
}IP 화이트리스트
location /admin/ {
allow 192.168.1.0/24;
deny all;
}접근 로그 구성
access_log /var/log/nginx/access.log;
오류 로그 구성
error_log /var/log/nginx/error.log warn;
사용자 정의 로그 형식
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';JSON 형식 로그
log_format json escape=json '{"time":"$time_iso8601","ip":"$remote_addr","method":"$request_method","uri":"$uri","status":$status}';접근 로그 비활성화
access_log off;
조건 로그(오류만 기록)
map $status $loggable {
~^[23] 0;
default 1;
}
access_log /var/log/nginx/access.log combined if=$loggable;파일 디스크립터 캐시
open_file_cache max=1000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2;
다중 연결 수락 및 epoll 활성화
events {
multi_accept on;
use epoll;
}FastCGI 캐시
fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=fastcgi:10m;
location ~ \.php$ {
fastcgi_cache fastcgi;
fastcgi_cache_valid 200 1h;
}연결 수 제한
limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn addr 100;
타임아웃 최적화
client_body_timeout 12; client_header_timeout 12; send_timeout 10;
📖도구 소개
주요 특징
❓자주 묻는 질문
🔗관련 도구
크론 표현식 해석기
크론 구문을 검증하고 다가올 실행 시간을 미리 확인합니다.
JSON을 CSV로 변환
JSON 데이터를 CSV 형식으로 변환
JSON을 YAML로
JSON 데이터를 YAML 형식으로 변환하기
JSON→XML 변환기
JSON 데이터를 XML 형식으로 변환합니다.
YAML을 JSON으로
YAML 구성을 JSON 형식 데이터로 변환합니다.
JSON 포맷터
JSON 데이터를 형식화하고, 검증하며 압축합니다.
JSON 시각화
트리 구조로 JSON 데이터 표시
JSON 데이터 생성기
테스트용 모의 JSON 데이터 생성
i18n JSON 번역기
JSON 언어 파일을 한 번에 번역합니다. 기본 내용을 붙여넣고 대상 언어를 선택하면, 도구가 평탄화된 키를 사용하여 OpenRouter API를 호출합니다.
JSON 차이 비교
두 JSON 데이터의 차이 비교
QR 코드 생성기
사용자 정의 QR 코드 이미지를 생성합니다.
SVG 플레이스홀더 이미지 생성기
사용자 정의 SVG 플레이스홀더 이미지 생성
Base64 이미지 변환기
이미지와 Base64 인코딩 간 상호 변환 도구
UUID 생성기
대량으로 UUID 고유 식별자 생성
비밀번호 생성기
안전하고 신뢰할 수 있는 무작위 비밀번호를 생성합니다.
Base64 인코딩/디코딩
Base64 문자열 인코딩 및 디코딩 도구
URL 인코딩/디코딩
URL 문자열 인코딩 및 디코딩 도구
MD5 해시 생성기
MD5 해시 값을 생성하는 도구
SHA256 해시 생성기
SHA256 해시 값을 생성하는 도구
SHA1 해시 생성기
SHA1 해시 값을 생성하는 도구
16진수 인코더/디코더
16진수 문자열 인코딩/디코딩 도구
이진 인코더/디코더
이진 문자열 인코딩/디코딩 도구
AES 암호화/복호기
AES 대칭 암호화 알고리즘 암호화/복호 도구
RSA 암호화/복호화 도구
RSA 비대칭 암호 알고리즘 도구
HMAC 생성기
HMAC 메시지 인증 코드 생성 도구
IP 주소 조회
IP 주소의 지리적 위치와 네트워크 정보를 조회합니다.
밀리초 시간 변환기
밀리초 타임스탬프와 yyyy-MM-dd HH:mm:ss 문자열 사이를 변환합니다.