본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.
본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.
이미지 로딩 중...
AI Generated
2025. 11. 1. · 33 Views
Nginx 핵심 개념 완벽 정리
웹 서버와 리버스 프록시로 널리 사용되는 Nginx의 핵심 개념을 초급 개발자도 쉽게 이해할 수 있도록 정리했습니다. 기본 설정부터 실무에서 자주 사용하는 패턴까지 다룹니다.
들어가며
이 글에서는 Nginx 핵심 개념 완벽 정리에 대해 상세히 알아보겠습니다. 총 12가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.
목차
- 기본_서버_블록_설정
- 리버스_프록시_설정
- 정적_파일_캐싱
- 로드_밸런싱_설정
- HTTPS_SSL_설정
- HTTP를_HTTPS로_리다이렉트
- CORS_헤더_설정
- Rate_Limiting_요청_제한
- Gzip_압축_설정
- 커스텀_에러_페이지
- 위치별_접근_제어
- WebSocket_프록시_설정
1. 기본 서버 블록 설정
개요
Nginx의 가장 기본이 되는 서버 블록 설정입니다. 포트와 서버 이름, 루트 디렉토리를 지정하여 정적 파일을 서빙합니다.
코드 예제
server {
listen 80;
server_name example.com;
root /var/www/html;
location / {
try_files $uri $uri/ =404;
}
}
설명
80번 포트로 들어오는 요청을 받아 /var/www/html 디렉토리의 파일을 제공합니다. 파일이 없으면 404 에러를 반환합니다.
2. 리버스 프록시 설정
개요
Nginx를 리버스 프록시로 사용하여 백엔드 애플리케이션으로 요청을 전달합니다. Node.js, Python 등의 앱 서버 앞단에 배치됩니다.
코드 예제
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
설명
모든 요청을 localhost:3000으로 실행 중인 백엔드 서버로 전달하며, 원본 호스트와 클라이언트 IP 정보를 헤더에 포함시킵니다.
3. 정적 파일 캐싱
개요
이미지, CSS, JS 파일 등 정적 리소스에 대한 브라우저 캐싱을 설정하여 성능을 향상시킵니다.
코드 예제
location ~* \.(jpg|jpeg|png|gif|css|js)$ {
expires 30d;
add_header Cache-Control "public, immutable";
access_log off;
}
설명
이미지와 CSS/JS 파일에 30일간의 캐시 유효기간을 설정하고, 불필요한 액세스 로그를 비활성화하여 성능을 최적화합니다.
4. 로드 밸런싱 설정
개요
여러 백엔드 서버로 트래픽을 분산시켜 가용성과 성능을 향상시킵니다. 라운드 로빈 방식으로 요청을 분배합니다.
코드 예제
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
location / {
proxy_pass http://backend;
}
}
설명
3개의 백엔드 서버를 정의하고 순차적으로 요청을 분배합니다. 한 서버가 다운되어도 다른 서버로 자동 전환됩니다.
5. HTTPS SSL 설정
개요
SSL 인증서를 적용하여 HTTPS 보안 통신을 활성화합니다. Let's Encrypt 등의 인증서를 사용할 수 있습니다.
코드 예제
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/cert.pem;
ssl_certificate_key /etc/ssl/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
}
설명
443 포트로 SSL/TLS 암호화 통신을 제공하며, 최신 보안 프로토콜만 사용하도록 설정합니다.
6. HTTP를 HTTPS로 리다이렉트
개요
HTTP로 들어온 모든 요청을 자동으로 HTTPS로 리다이렉트하여 보안을 강제합니다.
코드 예제
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
설명
80번 포트로 들어온 요청을 301 영구 리다이렉트로 HTTPS 주소로 자동 전환합니다.
7. CORS 헤더 설정
개요
Cross-Origin Resource Sharing을 허용하여 다른 도메인에서의 API 호출을 가능하게 합니다.
코드 예제
location /api {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE";
add_header Access-Control-Allow-Headers "Content-Type";
proxy_pass http://localhost:3000;
}
설명
API 엔드포인트에 CORS 헤더를 추가하여 모든 도메인에서의 요청을 허용하고, 허용할 HTTP 메서드를 지정합니다.
8. Rate Limiting 요청 제한
개요
특정 IP에서 과도한 요청을 보내는 것을 방지하여 서버를 보호합니다. DDoS 공격 방어에 유용합니다.
코드 예제
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
server {
location /api {
limit_req zone=mylimit burst=20;
proxy_pass http://localhost:3000;
}
}
설명
IP당 초당 10개의 요청만 허용하며, 순간적으로 최대 20개까지 버스트를 허용합니다. 초과 요청은 503 에러를 반환합니다.
9. Gzip 압축 설정
개요
텍스트 기반 리소스를 압축하여 전송하면 네트워크 대역폭을 절약하고 로딩 속도를 향상시킵니다.
코드 예제
gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1000;
gzip_comp_level 6;
설명
1KB 이상의 텍스트, CSS, JSON, JavaScript 파일을 레벨 6로 압축하여 클라이언트에 전송합니다.
10. 커스텀 에러 페이지
개요
에러 발생 시 사용자에게 친숙한 커스텀 에러 페이지를 보여줍니다. 사용자 경험을 개선합니다.
코드 예제
server {
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /404.html {
root /var/www/errors;
}
}
설명
404 에러와 5xx 서버 에러 발생 시 각각 지정된 커스텀 HTML 페이지를 표시합니다.
11. 위치별 접근 제어
개요
특정 URL이나 디렉토리에 대한 접근을 IP 주소 기반으로 제한합니다. 관리자 페이지 보호에 유용합니다.
코드 예제
location /admin {
allow 192.168.1.0/24;
allow 10.0.0.1;
deny all;
proxy_pass http://localhost:3000;
}
설명
/admin 경로는 특정 IP 대역과 주소에서만 접근 가능하고, 나머지는 모두 차단됩니다.
12. WebSocket 프록시 설정
개요
WebSocket 연결을 위한 특별한 헤더 설정입니다. 실시간 채팅이나 알림 기능에 필수적입니다.
코드 예제
location /ws {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
설명
WebSocket 프로토콜 업그레이드를 위한 헤더를 설정하여 양방향 실시간 통신을 가능하게 합니다.
마치며
이번 글에서는 Nginx 핵심 개념 완벽 정리에 대해 알아보았습니다. 총 12가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.
관련 태그
#Nginx #ReverseProxy #LoadBalancing #Configuration #WebServer
이 카드뉴스가 포함된 코스
댓글 (0)
함께 보면 좋은 카드 뉴스
UX와 협업 패턴 완벽 가이드
AI 에이전트와 사용자 간의 효과적인 협업을 위한 UX 패턴을 다룹니다. 프롬프트 핸드오프부터 인터럽트 처리까지, 현대적인 에이전트 시스템 설계의 핵심을 배웁니다.
자가 치유 및 재시도 패턴 완벽 가이드
AI 에이전트와 분산 시스템에서 필수적인 자가 치유 패턴을 다룹니다. 에러 감지부터 서킷 브레이커까지, 시스템을 스스로 복구하는 탄력적인 코드 작성법을 배워봅니다.
Feedback Loops 컴파일러와 CI/CD 완벽 가이드
컴파일러 피드백 루프부터 CI/CD 파이프라인, 테스트 자동화, 자가 치유 빌드까지 현대 개발 워크플로우의 핵심을 다룹니다. 초급 개발자도 쉽게 이해할 수 있도록 실무 예제와 함께 설명합니다.
실전 MCP 통합 프로젝트 완벽 가이드
Model Context Protocol을 활용한 실전 통합 프로젝트를 처음부터 끝까지 구축하는 방법을 다룹니다. 아키텍처 설계부터 멀티 서버 통합, 모니터링, 배포까지 운영 레벨의 MCP 시스템을 구축하는 노하우를 담았습니다.
MCP 동적 도구 업데이트 완벽 가이드
AI 에이전트의 도구를 런타임에 동적으로 로딩하고 관리하는 방법을 알아봅니다. 플러그인 시스템 설계부터 핫 리로딩, 보안까지 실무에서 바로 적용할 수 있는 내용을 다룹니다.