「Node.js·Python·Ruby 앱은 자체 HTTP 서버를 가짐」 — 그러면 nginx 왜 필요?
Reverse proxy 패턴 — 앱 앞에 nginx를 두는 건 거의 표준.
왜 앞에 두나.
1) 정적 파일 — 이미지·CSS·JS는 nginx가 직접 서빙(앱은 동적만).
2) SSL 종단 — HTTPS 처리는 nginx, 앱은 HTTP.
3) 로드 밸런싱 — 여러 앱 인스턴스로 분산.
4) 캐싱 — 응답 캐시.
5) 보안 — 직접 노출 안 됨.
6) 압축·헤더 조작.
기본 설정.
server { listen 80; server_name myapp.com; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }}.
앱은 3000 포트로 듣고, nginx가 80에서 받아 3000으로 프록시.
정적·동적 분리.
location /static/ { root /var/www/myapp; } — /static/* 는 디스크에서 직접.
location / { proxy_pass http://localhost:3000; } — 그 외는 앱으로.
정적 파일이 nginx 처리되므로 앱 부담 줄고 빠름.
WebSocket 지원.
proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; — WebSocket 패스스루.
실시간 채팅·알림 앱 필수.
한 줄 요약
Reverse proxy — nginx 앞 + 앱 뒤.
정적 파일·SSL·로드 밸런싱·캐싱·보안 모두 nginx가 처리, 앱은 비즈니스 로직만.
proxy_pass + 헤더 전달이 표준 패턴.
더 알아볼 것
- Cloudflare 같은 CDN과의 결합
- upstream 블록으로 다중 백엔드
- sticky session