
🌐 Nginx 면접 대비 Q&A
1. Nginx와 Apache의 가장 큰 차이점은 무엇인가요?
- Nginx는 이벤트 기반 아키텍처를 사용해, 하나의 프로세스가 비동기적으로 수천 개의 연결을 처리할 수 있다.
- Apache는 프로세스/스레드 기반 모델(MPM)로 동작하며, 연결마다 별도의 프로세스/스레드를 할당하기 때문에 동시 연결이 많아질수록 메모리와 CPU 사용량이 증가한다.
- 따라서 고성능/대규모 트래픽 환경에서는 Nginx가, 세밀한 설정과 다양한 모듈이 필요한 환경에서는 Apache가 유리하다.
2. Nginx에서 리버스 프록시 역할은 어떤 이점을 주나요?
- 보안 강화 : 내부 서버 IP와 구조를 외부에 노출하지 않는다.
- 로드 밸런싱 : 다수의 백엔드 서버에 트래픽을 분산시킨다.
- 캐싱 : 정적/동적 콘텐츠 캐싱으로 백엔드 부하를 줄인다.
- SSL 종료(Offloading) : HTTPS 암호화/복호화를 Nginx에서 처리하여 백엔드 부담 완화.
3. 로드 밸런싱 전략(Round Robin, Least Connections, IP Hash)의 차이점은?
- Round Robin : 순차적으로 서버에 분배 (기본값). 단순하고 공평하지만 서버 성능 차이를 고려하지 않음.
- Least Connections : 현재 연결 수가 가장 적은 서버에 배분. 요청 처리 시간이 불균일한 환경에서 효율적.
- IP Hash : 클라이언트 IP를 해시하여 특정 서버로 고정. 세션 지속성이 필요한 경우 적합.
4. 정적 리소스를 Nginx로 서빙하면 WAS보다 좋은 이유는?
- Nginx는 정적 파일 처리에 특화되어 있어 I/O 효율이 뛰어나다.
- WAS(Spring, Node 등)는 동적 로직 실행에 집중하도록 하고, 정적 리소스는 Nginx가 처리하면 전체 시스템 성능과 안정성이 향상된다.
5. location 블록에서 prefix match와 regex match 차이는?
- Prefix match (
/images/) : 단순 경로 접두사 매칭. 속도가 빠르고 자주 사용됨.
- Regex match (
~ \.php$) : 정규표현식 기반 매칭. 복잡한 조건 처리 가능하지만 성능 오버헤드가 있음.
- 따라서 일반적으로 prefix match를 우선 사용하고, 필요할 때만 regex를 활용한다.
6. Nginx로 무중단 배포를 구현하려면 어떤 방식이 있나요?
- Blue-Green Deployment : 두 개의 서버 그룹을 운영하며, 새 버전을 한쪽에 배포 후 트래픽을 전환.
- Canary Release : 일부 사용자 트래픽만 새 버전으로 라우팅 후 점진적으로 확대.
- Nginx는
upstream 블록과 proxy_pass 설정을 통해 손쉽게 트래픽을 분산/전환할 수 있다.
7. Kubernetes 환경에서 Ingress Controller로 Nginx를 사용하는 이유는?
- Ingress Controller 표준 구현체로 가장 널리 사용됨.
- TLS 종료, 리버스 프록시, 로드 밸런싱 기능을 기본 제공.
- 커뮤니티/문서 지원이 풍부하여 운영 편의성이 높음.
- Envoy, HAProxy 기반 Ingress도 있지만, 학습 곡선과 운영 난이도 측면에서 Nginx가 적합한 경우가 많다.
8. Nginx는 멀티 프로세스 기반인데, 동시성을 어떻게 확보하나요?
- Nginx는 Master-Worker 구조로 동작한다.
- 각 Worker는 이벤트 루프 기반으로 동작하며,
epoll(Linux), kqueue(BSD) 같은 OS 레벨 이벤트 모델을 활용한다.
- 따라서 스레드나 프로세스를 많이 생성하지 않고도 수만 개의 연결을 동시에 처리할 수 있다.
9. 이벤트 루프 방식(epoll)이 성능에 어떤 이점을 주나요?
- 기존 블로킹 I/O는 연결마다 스레드를 필요로 하지만, epoll은 다수의 연결 이벤트를 감시하고 준비된 소켓만 처리한다.
- 불필요한 Context Switching이 줄어들고, CPU/메모리 효율성이 높아진다.
- 이로 인해 Nginx는 C10K 문제(만 개 이상의 동시 연결 처리)를 해결할 수 있었다.
10. Nginx에서 캐싱을 설정하면 어떤 장점과 단점이 있나요?
- 장점 : 응답 속도 향상, 백엔드 부하 감소, 네트워크 비용 절감.
- 단점 : 캐시 갱신 정책이 필요(만료, 무효화). 동적 콘텐츠 변경 시 최신성이 보장되지 않을 수 있음.
- 따라서 캐시는 정적 리소스나 자주 변하지 않는 API 응답에 적합하다.
11. Nginx와 HAProxy의 차이는 무엇인가요?
- Nginx : 웹 서버 + 리버스 프록시 + L7 로드밸런싱 기능 제공. 정적 리소스 처리 강점.
- HAProxy : L4/L7 로드밸런서에 특화. 세션 지속성, Health Check, 고급 로드밸런싱 알고리즘에 강점.
- 요약 : Nginx는 범용 프록시/웹서버, HAProxy는 로드밸런싱 전문 도구.
12. Envoy가 Kubernetes/마이크로서비스 환경에서 각광받는 이유는?
- 서비스 메시(Service Mesh) 구현에 최적화됨.
- gRPC, HTTP/2, HTTP/3 지원으로 최신 프로토콜 친화적.
- Observability : 트래픽 모니터링, 메트릭, 트레이싱에 강력한 기능.
- Istio 같은 서비스 메시의 기본 데이터 플레인으로 사용되며, MSA 환경에서 표준처럼 자리잡았다.
13. CDN 환경에서는 Nginx와 HAProxy 중 어떤 선택이 더 적합할까요?
- Nginx는 정적 리소스 캐싱과 콘텐츠 서빙에 강점이 있어 CDN 엣지 서버로 적합하다.
- HAProxy는 로드밸런싱에는 탁월하지만 캐싱 기능은 제한적이다.
- 따라서 CDN 환경에서는 일반적으로 Nginx + 캐싱 레이어 조합이 많이 사용된다.
정리
- Apache : 전통적, 프로세스/스레드 기반, 유연한 모듈.
- Nginx : 이벤트 기반, 정적 리소스·프록시·Ingress 최강자.
- HAProxy : 로드밸런싱 전문, 금융/통신 등 초고성능 트래픽 환경.
- Envoy : 서비스 메시 표준, gRPC/HTTP3, 클라우드 네이티브 환경.