Nginx를 이해하기 위해서는 왜 nginx가 탄생하게 되었는지 전체적인 흐름에 대해서 파악해봐야 한다.
아파치는 요청이 생길때마다 연결할 때 process를 하나씩 만들어 낸다.
process 자체를 만드는 시간은 오래 걸리니까 미리 만들어 놓는 prefork 방식을 사용했다.
그래서 새로운 요청이 들어오게되면 미리 만들어 놓은 process를 바로 사용하였다.
만들어 놓은 process가 모두 할당되면 추가로 process를 만들어 놓는 방식이었다.
이러한 구조는 다양한 모듈을 만들어서 서버에 빠르게 기능을 추가할 수 있게 해줬고, 아파치 서버는 동적 컨텐츠를 처리할 수도 있게 되었다.
확장성이 좋다는 장점도 갖고 있어 덕분에 요청을 받고 응답을 처리하는 과정을 하나의 서버에서 해결할 수 있게 되었다.
인터넷 트래픽이 계속해서 증가되던 시기.
이때 서버에 동시에 연결되는 커넥션이 많아졌을 때 더이상 커넥션을 형성하지 못하는 문제가 생기게 되었다.
이러한 문제를 바로 C10K, 커넥션 10,000개의 문제라고 한다.
동시 연결된 커넥션 수 - 요청을 처리하기 위해 서버가 한 시점에 얼마나 많은 클라이언트와 커넥션을 형성하고 있는 지
초당 요청 처리 수 - 초당 서버가 얼마나 빨리 요청을 처리할 수 있는 지