Nginx 설정 생성기
Nginx 설정을 처음부터 작성하려면 모든 proxy_set_header 줄과 gzip으로 압축할 MIME 타입을 일일이 기억해야 하고, try_files $uri/ /index.php?$args와 라우팅을 조용히 망가뜨리는 변형의 차이까지 구분해야 합니다. 이 생성기는 도메인, 업스트림, PHP 핸들러, SSL 파일 경로를 입력받아 TLS, HTTP/2, 정적 파일 캐싱, 압축에 대한 합리적인 기본값이 담긴 server block을 출력합니다.
server block 생성 방법
-
1
프리셋 선택
정적 사이트, PHP-FPM(Laravel, WordPress), Node.js 리버스 프록시, 또는 단순한 301 리디렉션 중에서 고르세요.
-
2
도메인 입력
server_name 목록을 넣습니다. 보통 www가 붙은 도메인과 붙지 않은 도메인을 함께 적습니다.
-
3
SSL 정보 설정
fullchain과 privkey 파일 경로를 지정하거나, HTTP만 사용할 경우 이 단계를 건너뜁니다.
-
4
업스트림 조정
proxy_pass를 쓰는 경우의 포트, 소켓 경로 또는 백엔드 URL을 지정합니다.
-
5
복사해서 적용
결과를 /etc/nginx/sites-available에 넣고 nginx -t를 실행한 뒤 Nginx를 reload 하세요.
좋은 server block의 구성
요즘 Nginx 가상 호스트는 대체로 다음 요소로 이루어집니다.
| 구성 요소 | 역할 |
|---|---|
listen 443 ssl http2 |
HTTP/2를 켠 상태로 HTTPS 연결을 받습니다 |
ssl_certificate + ssl_certificate_key |
TLS 인증서와 개인 키 파일을 지정합니다 |
ssl_protocols TLSv1.2 TLSv1.3 |
오래된 TLS 버전을 제외합니다 |
gzip on + 타입 목록 |
텍스트/HTML/JSON/JS/CSS를 전송 시점에 압축합니다 |
정적 자산용 expires 헤더 |
재방문자의 반복 요청을 줄입니다 |
try_files |
프런트 컨트롤러(PHP, Laravel 등)로 넘깁니다 |
| HSTS + 보안 헤더 | 브라우저가 항상 TLS를 쓰도록 강제합니다 |
리버스 프록시의 핵심
Nginx 뒤에서 동작하는 Node.js, Python, Ruby 애플리케이션의 경우:
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
X-Forwarded-For를 빠뜨리는 것은 애플리케이션 로그에서 실제 클라이언트 IP를 잃어버리는 전형적인 실수입니다.
자주 저지르는 실수
- server_name 폴백 블록 누락. 일치하는 이름이 없으면 Nginx는 첫 번째 server block을 기본값으로 사용합니다. Host 헤더 공격을 막으려면 444를 반환하는 캐치올
server_name _블록을 두세요. - 인증서 순서 오류.
ssl_certificate파일에는 리프 인증서만이 아니라 전체 체인(fullchain: 리프 + 중간 인증서)이 들어가야 합니다. - 과도한 캐싱.
/index.html에expires 1y를 주면 이후 배포가 반영되지 않습니다. 대신 정적 자산 URL에 버전을 붙이세요. - 테스트 없이 reload.
systemctl reload nginx전에는 반드시nginx -t를 실행하세요. 문법 오류 하나로 사이트 전체가 내려갑니다.
자주 묻는 질문
HTTP/2는 안정적이며 Nginx 1.25 이상에서 폭넓게 지원됩니다. HTTP/3(QUIC)도 Nginx 1.25 이상에서 쓸 수 있지만 아직 실험적 기능입니다. 지금 운영 환경을 구성한다면 HTTP/2를 켜고, 필요하면 http3과 quic 지시어로 HTTP/3를 추가하세요.
관례상 공개 체인은 /etc/ssl/certs/에, 개인 키는 /etc/ssl/private/에 둡니다. Let’s Encrypt는 모든 파일을 /etc/letsencrypt/live/domain/ 아래에 보관합니다. 사용 중인 갱신 도구가 기대하는 경로를 따르세요.
대부분의 사이트에서는 그렇습니다. 301 https://$host$request_uri를 반환하는 80 포트용 server block을 따로 추가하세요. HSTS와 함께 쓰면 첫 요청 이후에는 이 HTTP 블록이 거의 호출되지 않습니다.
reload 없이 설정만 검사하려면 sudo nginx -t를 실행하세요. “syntax is ok”와 “test is successful”이 출력되면 sudo systemctl reload nginx로 적용합니다. 운영 환경에서는 절대 restart를 쓰지 마세요. reload는 서비스 중단 없이 반영됩니다.
관련 도구
ASCII 표 참조
NUL, LF, DEL 같은 제어 문자를 포함해 모든 문자에 대한 10진수, 16진수, 8진수, 2진수, HTML 숫자 문자 참조를 담은 0부터 127까지의 전체 ASCII 표.
HTML 문자 참조
HTML 엔티티의 검색 가능한 목록, 각 엔티티의 이름 및 숫자 코드, 그리고 특수 문자 및 기호에 대한 1클릭 복사 기능을 제공합니다.
키보드 단축키 참고표
macOS, Windows, Linux에서 VS Code, Chrome, GNU Readline을 쓰는 Bash의 문서화된 기본 단축키를 검색합니다.
보색 찾기
어떤 입력에 대해서도 보색을 찾습니다. HSL 반대 색, 분할 보색 쌍, 그리고 접근성 있는 조합 제안을 반환합니다.
색상 틴트 생성기
기준 색의 밝은 틴트를 생성합니다. 디자인 시스템 토큰, 배경, 호버 상태를 위한 3-20단계 스케일.
색상 혼합기
두 HEX 색상을 2-20개의 균등한 색상 견본으로 섞습니다. 양 끝 색상을 포함해 각 중간 색상을 대문자 HEX 코드로 확인하세요.
이 도구는 다른 언어로도 제공됩니다
- Generator konfiguracji Nginx [PL]
- ตัวสร้างไฟล์ config ของ Nginx [TH]
- Generator Konfigurasi Nginx [ID]
- Nginx 設定ジェネレーター [JA]
- Gerador de Configuração Nginx [PT]
- Nginx-konfigurationsgenerator [SV]
- Trình tạo cấu hình Nginx [VI]
- Nginx Konfigurationsgenerator [DE]
- مولّد إعدادات Nginx [AR]
- Generador de Configuración de Nginx [ES]
- Générateur de configuration Nginx [FR]
- Nginx-configuratiegenerator [NL]
- Nginx Config Generator [EN]
- Generatore di Configurazione Nginx [IT]
- Генератор конфигураций Nginx [RU]
- Nginx Yapılandırma Üreteci [TR]
- Nginx 配置生成器 [ZH]