Nginx(엔진엑스)는 2004년 Igor Sysoev가 개발한 고성능 웹 서버·리버스 프록시·로드 밸런서다. 이벤트 기반 아키텍처로 적은 메모리로도 수만 개의 동시 연결을 처리한다.
주요 역할
| 역할 | 설명 |
|---|
| 웹 서버 | 정적 파일(HTML, CSS, JS, 이미지) 직접 서빙 |
| 리버스 프록시 | 백엔드 서버(Node.js, Django)로 요청 전달 |
| 로드 밸런서 | 여러 서버에 트래픽 분산 |
| SSL 터미네이션 | HTTPS 처리 |
설정 예시
nginx
# /etc/nginx/sites-available/myapp
# HTTP → HTTPS 리다이렉트
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
# HTTPS 서버
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# 정적 파일
location /static/ {
alias /var/www/static/;
}
# 리버스 프록시
location / {
proxy_pass http://localhost: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;
}
}
로드 밸런싱
nginx
upstream backend {
least_conn;
server app1:3000 weight=3;
server app2:3000 weight=2;
server app3:3000 backup;
}
관련 개념
- •로드 밸런서 — Nginx의 주요 기능
- •SSL/TLS — Nginx SSL 터미네이션
- •Docker — Nginx 컨테이너화
참고문헌