데브허브 | DEVHUB | Wait... Nginx can do WHAT?!Wait... Nginx can do WHAT?!
- Nginx는 단순한 웹 서버를 넘어 API 게이트웨이, 콘텐츠 캐시, 로드 밸런서, 요청 재작성, 미디어 스트리밍, 메일 프록시, 리버스 프록시 등 다재다능한 기능을 수행합니다. 🛠️
- 인터넷 웹 서버의 33% 이상을 점유하며, Docker 컨테이너에서 가장 많이 배포되는 기술이자 OpenBSD의 핵심 구성원입니다. 🚀
- 2002년 C10K 문제 해결을 위해 탄생했으며, 2019년 F5에 인수된 후 창립자들이 떠나 Free Nginx와 같은 포크가 생겨났습니다. 🕰️
nginx.conf 파일을 통해 설정되며, event 및 http 지시어를 사용하여 웹 동작을 구성합니다. ⚙️
- 특정 포트, 서버 이름, 경로 설정 및
try_files 지시어를 통한 폴백(fallback) 처리가 가능합니다. 📁
proxy_pass를 이용한 리버스 프록시 기능은 요청을 백엔드로 전달하고 응답을 자체 처리한 것처럼 반환하여 트래픽 라우팅 및 로드 밸런싱에 핵심적입니다. 🔄
- Nginx가 트래픽을 라우팅하고 로드 밸런싱하는 데 필수적인 DNS 서버의 중요성을 강조하며, 인프라 자동화 도구(예: Terraform)를 통한 DNS 레코드 관리가 효율적임을 언급합니다. 🌐
error_log와 access_log를 통해 트래픽 모니터링 및 문제 해결을 위한 상세한 로그를 기록합니다. 📝
- 강력한 캐싱 기능으로 정적 및 동적 콘텐츠를 캐시하여 응답 지연 시간을 줄이고 백엔드 서비스를 보호하며, 소규모 CDN 역할도 수행합니다. 💾
- GZIP 압축 기능을 통해 응답 크기를 획기적으로 줄여 네트워크 부하와 비용을 절감합니다. 🗜️
- 최상급 로드 밸런서로서
upstream 지시어를 통해 여러 백엔드 서버 간에 트래픽을 분산하며, 라운드 로빈, 최소 연결, IP 해시 등 다양한 분산 전략과 헬스 체크를 지원합니다. ⚖️
- C10K 문제(초당 10,000 요청)를 성공적으로 처리하며, 60초 동안 50만 건 이상의 요청을 거의 오류 없이 처리하는 뛰어난 성능을 보여줍니다. ⚡
- API 게이트웨이 기능으로 요청 제한 및 스로틀링을 설정하여 트래픽을 제어할 수 있습니다. 🚦
- 443 포트에서 HTTPS 요청을 처리하는 SSL/TLS 종료 기능을 제공하여 보안 통신을 가능하게 합니다. 🔒
- 미디어 스트리밍 모듈을 통해 동영상 버퍼 크기, 전송률 등을 설정하여 미디어 콘텐츠를 효율적으로 스트리밍할 수 있습니다. 🎬
- Docker 컨테이너 환경에서 가장 널리 배포되며,
latest (172MB), alpine (53MB), alpine-slim (12MB) 등 다양한 크기의 이미지를 제공하여 사용 목적에 맞게 선택할 수 있습니다. 🐳
- Nginx UI는 시스템 지표, 로드, 네트워크, 디스크 I/O, 요청 수 등을 시각적으로 보여주는 오픈소스 웹 UI로, 설정 편집 및 로그 확인 기능을 제공합니다. 📊
- Nginx Playground는 Nginx 설정 파일을 온라인에서 테스트하고 결과를 확인할 수 있는 유용한 도구입니다. 🧪