이번 포스팅은 Nginx에 대해 다루고 있습니다.
Nginx는 가장 보편적인 웹 서버 중 하나이며, 프록시 관련 기능도 갖추고 있습니다. 따라서 웹 서버와 WAS, 프록시와 그 종류에 대해서 기본적인 지식을 갖추고 읽는 것을 추천드립니다.
nginx ("engine x") is an HTTP web server, reverse proxy, content cache, load balancer, TCP/UDP proxy server, and mail proxy server. Originally written by Igor Sysoev and distributed under the 2-clause BSD License. (nginx 공식 사이트)
nginx("engine x")는 HTTP 웹 서버, 리버스 프록시, 컨텐츠 캐시, 로드밸런서, TCP/UDP 프록시 서버, 그리고 메일 프록시 서버입니다. Igor Sysoev가 처음 작성했고, BSC 라이선스 2항에 의거해 배포됩니다. (*주: BSC 라이선스는 오픈소스 라이선스의 한 종류입니다.)
Nginx는 기본적으로 경량 웹 서버입니다. 높은 안정성과 대규모의 커뮤니티, ~등을 기반으로 하여 현재 가장 많이 쓰이는 웹 서버 중 하나인데요.

Nginx는 단일 마스터 프로세스, 다수의 워커 프로세스, 프록시 캐시, 캐시 로더와 캐시 매니저로 구성되고, 이 구성 요소들을 이용해서 Event-Driven 방식으로 동작합니다.
실제로 일하는 건 워커 프로세스이고 마스터 프로세스는 워커 프로세스를 비롯한 구성 요소 전체를 관리하는 역할이죠.
직접적으로 웹 서버의 기능을 수행하는 모듈입니다.
위에서 말했듯이 여러 개가 생성될 수 있기도 하고요.
프록시 서버에서 캐싱한 데이터를 저장하는 곳입니다.
Nginx 메모리 내의 데이터베이스를 캐시 메타데이터로 채웁니다.장애가 발생할 경우 마스터 프로세스에 의해 다시 시작됩니다.
Nginx가 실행되면 우선적으로 마스터 프로세스가 생성됩니다.keep-alive-time만큼 유지됩니다.이벤트 event라고 합니다. 이벤트는 큐에 담긴 이후 워커 프로세스의 처리 시점까지 비동기 방식으로 대기합니다.3번을 통해 코어가 담당하는 프로세스 변경 횟수를 줄이면서 CPU의 컨텍스트 스위칭을 줄입니다.
Event-Driven Model에 따라 비동기적으로 처리하고, 이에 따라 동시에 여러 처리를 하므로 동시접속 처리가 빠릅니다. Nginx를 사용하여 Reverse Proxy, Load Balancer의 역할을 수행하도록 할 수 있습니다.gzip을 이용해 데이터를 압축할 수 있습니다.작동 방식 부분에도 사실 시각 자료를 넣고 싶었으나... 그리기에 너무 어려워 아쉽게 생략하였습니다.
이번 글에 혹여 틀린 점이 있을 경우 피드백 주시면 수정하도록 하겠습니다.
글 읽어주셔서 감사합니다!