본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.
본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.
이미지 로딩 중...
AI Generated
2025. 11. 1. · 13 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)
함께 보면 좋은 카드 뉴스
마이크로서비스 배포 완벽 가이드
Kubernetes를 활용한 마이크로서비스 배포의 핵심 개념부터 실전 운영까지, 초급 개발자도 쉽게 따라할 수 있는 완벽 가이드입니다. 실무에서 바로 적용 가능한 배포 전략과 노하우를 담았습니다.
Spring Cloud 설정 갱신과 Bus 완벽 가이드
운영 중인 마이크로서비스의 설정을 재시작 없이 갱신하는 방법을 배웁니다. @RefreshScope부터 Spring Cloud Bus까지, 대규모 서비스의 설정 관리 전략을 실무 스토리로 풀어냅니다.
AWS Route 53 라우팅 정책 완벽 가이드
AWS Route 53의 6가지 라우팅 정책을 실무 관점에서 완벽 정리합니다. 단순 라우팅부터 장애 조치까지, 초급 개발자도 쉽게 이해할 수 있도록 실전 예제와 함께 설명합니다.
Application Load Balancer 완벽 가이드
AWS의 Application Load Balancer를 처음 배우는 개발자를 위한 실전 가이드입니다. ALB 생성부터 ECS 연동, 헬스 체크, HTTPS 설정까지 실무에 필요한 모든 내용을 다룹니다. 초급 개발자도 쉽게 따라할 수 있도록 단계별로 설명합니다.
AWS 웹 서버 배포 완벽 가이드
EC2 인스턴스에 웹 서버를 구축하고 실제 서비스를 배포하는 과정을 단계별로 배웁니다. Nginx 설정부터 도메인 연결까지, 실무에서 바로 활용할 수 있는 배포 노하우를 담았습니다.