웹 서버

- 초기 웹 서비스는 대부분 정보 전달이 목적인 문서 위주의 정적 페이지였다. 그렇기 때문에 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