트래픽이 많은 웹사이트의 확장성을 위해 개발된 경량의 고성능 웹서버이다.
Nginx는 적은 자원의 사용으로 높은 성능과 높은 동시성을 목표로 만들어졌다.
Nginx가 등장하기 전에는 Apache를 웹서버로 많이 사용하였지만 점차 늘어나는 트래픽을 감당하기 어려웠고 C10K 문제(하나의 웹 서버에 1만개 이상의 클라이언트 접속을 처리하지 못하는 문제)가 발생하였고 이를 해결하기 위해 러시아의 Igor Sysoev라는 개발자에 의해 2002년 Nginx의 개발이 시작되었고 2004년에 릴리즈 됐다.
현재 Nginx는
등으로 사용되고있다
웹서버는 다른 말로 HTTP Server라고도 부른다. 웹브라우저의 카운터 파트너로서 서버 쪽에서 정보를 제공하는 소프트웨어를 의미한다. 아래 그림은 웹서버의 시장 점유율을 보여준다. 표를 자세히 참고하면 2019년 8월 기점으로 nginx가 점유율 1위로 추월한것을 알 수 있다. (참고 netcraft.com)
웹 서버의 주된 기능은 웹 페이지를 클라이언트로 전달하는 것이다. 주로 그림, CSS, 자바스크립트를 포함한 HTML 문서가 클라이언트로 전달된다.
웹서버는 정적(image, css, js)인 정보를 반환하는 역할을 한다. 대표적인 Web Server로는 Nginx, Apache 등이 있다!
Apache와 Nginx의 차이는 간단하게 Apache는 request에 대해 process(+thread) 하나씩 사용하고 Nginx는 Event-Driven 방식으로 비동기 처리한다.
Apache와 같은 웹서버는 클라이언트로부터 받은 요청을 처리할 때 새로운 프로세스 또는 쓰레드를 생성하여 처리한다. 요청마다 쓰레드가 생성되므로 접속하는 사용자가 많으면 그만큼 쓰레드가 생성되어 CPU와 메모리 자원의 소모가 커진다.
Nginx는 Event-Driven 구조로 동작하기 때문에 한 개 또는 고정된 프로세스만 생성하여 사용하고, 비동기 방식으로 요청들을 Concurrency 하게 처리할 수 있다. 위의 그림에서 보이듯이 Nginx는 새로운 요청이 들어오더라도 새로운 프로세스와 쓰레드를 생성하지 않기 때문에 프로세스와 쓰레드 생성 비용이 존재하지 않고, 적은 자원으로도 효율적인 운용이 가능하다. 이러한 Nginx의 장점 덕분에 단일 서버에서도 동시에 많은 연결을 처리할 수 있다.
참고사이트
생활코딩-nginx소개
March 2022 Web Server Survey
[개념] Django는 Web Server가 아니라구요!!
[Nginx] Nginx 이해하기
[Nginx] Nginx란, Nginx 와 Apache