Nginx
Nginx 란
- 여러 기능을 제공하는 경량 오픈 소스 웹 서버 소프트웨어.
- 동시 접속 처리에 특화되어 있어, 많은 웹 사이트들이 nginx를 웹 서버로 사용.
- BSD 2-clause 라이선스라는 원본 라이선스를 유지하는 선에서 수정, 재배포가 자유로운 라이선스 사용.
웹 서버 기능
- 요청에 맞는 정적 파일 제공 (일반적인 web server 기능)
- 캐싱을 통한 리버스 프록시 (클라이언트와 내부 서버의 중개자 역할)
- 로드 밸런싱 및 health check
- OpenSSL을 통한 TLS/SSL 지원
- IPv6 호환 가능
- HTTP, HTTP/2 지원, HTTP3 개발 중
- URL rewrite / redirection
- Reload를 통해 서버 데몬을 재시작하지 않고 설정 변경 가능
Apache와의 차이
- Apache
- 요청을 받을 때 마다 새 프로세스 / 스레드를 생성해서 동작.
- 한 번에 많은 요청을 받으면 자원의 소모가 큼.
- 일정량 이상의 요청을 한 번에 받기 힘듦.
- Nginx
- 비동기 이벤트 구조로 동작.
- 고정된 수의 프로세스를 사용하기 때문에 많은 요청에도 메모리 소모가 적음.
- 한 개의 master process가 여러 개의 worker process를 관리하는 구조.
- OS가 각 worker process에 요청을 분배해서 concurrent 하게 처리하는 구조.
References
- https://en.wikipedia.org/wiki/Nginx
- https://namu.wiki/w/NGINX
- https://icarus8050.tistory.com/57