03. NGINX 리버스 프록시로 Django 배포: 동적/정적 분리 운영
구성 개념도
핵심 정리
1) 운영이 쉬운 배포 패턴: 정적/동적 분리
- 정적 파일(CSS/JS/이미지)은 NGINX가 직접 제공하면 빠르고 단순합니다.
- 동적 요청은
proxy_pass로 앱(예: Django+Gunicorn) 컨테이너로 넘깁니다.
2) proxy 설정에서 꼭 챙길 헤더
- 앱이 실제 클라이언트 정보를 알 수 있도록
X-Forwarded-For,X-Forwarded-Proto를 넘겨주는 구성이 자주 사용됩니다. - 이 부분이 빠지면, 앱 로그에 클라이언트 IP가 모두 프록시 IP로 찍히거나, HTTPS 뒤에서 리다이렉트가 꼬이는 문제가 생길 수 있습니다.
upstream django_upstream {
server django:8000;
}
server {
listen 80;
server_name example.local;
# 정적 파일
location /static/ {
alias /srv/static/;
expires 7d;
}
# 동적 요청
location / {
proxy_pass http://django_upstream;
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;
}
}
운영 체크리스트
- 정적 파일 경로는
root가 아닌alias가 더 직관적인 경우가 많습니다(경로 합치기 실수 방지). - 프록시 타임아웃(업스트림 지연)과 바디 크기 제한(업로드)을 서비스 특성에 맞게 조정해 두면 장애가 줄어듭니다.
- Django라면 ALLOWED_HOSTS, CSRF_TRUSTED_ORIGINS 등 ‘프록시 뒤’ 설정도 같이 점검하시는 것을 권장드립니다.
참고 링크
헷갈리기 쉬운 개념/지시어는 공식 문서와 RFC/레퍼런스를 함께 보시면 이해가 빨라집니다.
'Tech Note > 서버-Nginx' 카테고리의 다른 글
| [실습] 05. split clients로 트래픽 분배 구성 (0) | 2026.01.04 |
|---|---|
| [실습] 04. NGINX 캐시 입문 (0) | 2026.01.04 |
| [실습] 02. 정적 파일·멀티 도메인·로컬 DNS 설정 (0) | 2026.01.04 |
| [실습] 01. Docker기반 NGINX + Master/Worker 구조 (0) | 2026.01.04 |
| 9. 운영 자동화(검증→반영→스모크→롤백) “nginx-safe-reload” (0) | 2025.12.28 |