웹 서버

- 초기 웹 서비스는 대부분 정보 전달이 목적인 문서 위주의 정적 페이지였다. 그렇기 때문에 HTML과 같은 마크업 언어로 작성된 문서를 서버에서 보내주기만 하면 됐다.
- 서비스가 발전하면서 서버는 크고 다양한 데이터를 처리해야 했고, 서버의 부하는 커졌다.
- 서버의 부담을 줄이고자
Web Server
와 WAS(Web Application Server)
와 같은 개념이 생겼고 Web Server는 HTML, JS 같은 정적 컨텐츠, WAS는 DB 조회나 다양한 로직들을 수행하는 동적인 컨텐츠를 담당하고 있다.
NginX
는 바로 Web Server
의 구축을 도와주는 소프트웨어이다.
NginX
Apache
와 함께 대표적인 웹 서버 소프트웨어이다.
- 클라이언트로부터 요청을 받아 정적 파일을 제공한다.
- 프록시 서버의 기능(로드 밸런싱, 캐시) 을 한다.
- 프록시 서버란 클라이언트와 서버 간의 중계 서버로, 통신을 대리 수행한다.
Apache vs NginX
Apache

- NginX가 나오기 이전에는 Apache가 있었다. Apache는 미리 프로세스나 스레드를 생성하고 요청이 들어오면 미리 생성했던 것을 사용하는 방식으로 요청에 대응한다.
- 만들어 놓은 프로세스가 모두 할당 되었다면 추가로 생성한다.
- 이런 방식은 확장성이 좋다는 특징을 갖고 있어서 개발자는 여러 모듈을 만들어서 쉽게 기능을 추가할 수 있다.
- 하지만 커넥션을 유지하기 위해 여러 프로세스나 스레드를 갖고 있어야 하는데, 이로 인해 메모리가 부족해지고 많은 컨텍스트 스위칭으로 인해 CPU에 부하가 걸린다.
- 이를 보완하기 위해 NginX가 나온다.
NginX