
클라이언트 요청 → Nginx(Reverse Proxy, Load Balancer)
→ 백엔드 서버(WAS, Spring Boot, Node.js 등)
→ 응답 반환
server, location) 설정 구조 worker_processes auto; : CPU 코어 개수에 맞게 자동 할당 worker_connections : 동시 연결 수 조절 (ex. 1024 → 수만 개 커넥션 가능) upstream 블록 : 로드 밸런싱 서버 그룹 정의 location 블록 : 요청 라우팅 세부 제어 proxy_pass : 백엔드 서버로 요청 전달 access.log, error.log) 및 모니터링 필수 location 블록에서 prefix match와 regex match 차이는? limit_req_zone을 이용한 요청 속도 제한 → DDoS 완화 rewrite, return 지시어로 URL 구조 제어 가능 nginx -s reload : 설정 반영 시 무중단 적용 가능 proxy_next_upstream, fail_timeout으로 비정상 서버 자동 제외 ssl_protocols, ssl_ciphers) add_header X-Frame-Options, Content-Security-Policy) access.log, error.log를 ELK(Elasticsearch + Logstash + Kibana)와 연동 proxy_cache_use_stale 옵션으로 백엔드 장애 시 캐싱된 응답 제공 worker_connections와 worker_processes 설정이 성능에 미치는 영향은? | 구분 | Nginx | Apache HTTP Server | HAProxy | Envoy |
|---|---|---|---|---|
| 주요 역할 | 웹 서버, 리버스 프록시, 로드 밸런서 | 전통적인 웹 서버 (정적/동적 콘텐츠 처리) | 고성능 TCP/HTTP 로드 밸런서 | 클라우드 네이티브 프록시, 서비스 메시 |
| 아키텍처 | 이벤트 기반(Non-blocking, epoll/kqueue) | 프로세스/스레드 기반 (MPM) | 이벤트 기반, 고성능 I/O | 이벤트 기반, gRPC/HTTP2 지원 |
| 강점 | 가벼움, 정적 리소스 처리, 리버스 프록시 | 다양한 모듈, .htaccess로 세밀한 설정 | 로드밸런싱 특화, 세션 지속성, Health Check | 서비스 메시용, Observability, gRPC/HTTP3 |
| 로드 밸런싱 | Round Robin, Least Connections, IP Hash | 기본 지원(성능 한계) | 전문적, 다양한 알고리즘 지원 | 고급 기능 + 서비스 디스커버리 연계 |
| 캐싱 | Proxy 캐싱, FastCGI 캐싱 | 모듈 기반 캐싱 (mod_cache 등) | 기본 캐싱 없음 (단순 프록시) | 캐싱보단 서비스 메시 중심 |
| 확장성 | Kubernetes Ingress Controller로 많이 사용 | 전통적인 단일 서버 중심 | L4/L7 로드밸런서, 고성능 환경 최적 | Istio 등 서비스 메시와 통합 |
| 주요 사용처 | 정적/동적 웹 서비스, 리버스 프록시, CDN, Ingress | 전통적 웹 호스팅, PHP/Perl 기반 서비스 | 대규모 트래픽 분산, 금융/통신 | 마이크로서비스 아키텍처, 서비스 메시 |