Nginx란?

김진회·2022년 11월 22일
2

CI/CD

목록 보기
3/7

Nginx란?

  • 비동기 이벤트 기반 구조의 경량 웹 서버로 Http Web Server나 로드 밸런서로 사용된다.

1. Nginx의 개발 이유

  • 초기에는 아파치 서버의 단점을 보완하기 위해 개발되었다.
    • 아파치 서버는 요청이 들어오면 커넥션을 형성하기 위해 매번 프로세스를 생성한다. 인터넷이 발달되고 서버 트래픽량이 높아지면서 서버에 동시 연결된 커넥션이 많아졌을 때 더 이상 커넥션을 형성하지 못하는 C10K 문제가 발생한다.
      • 커넥션마다 프로세스를 할당하기에 메모리 부족으로 이어짐
      • 확장성이라는 장점이 프로세스의 리소스 양을 늘려서 무거운 프로그램이 됨
      • 많은 커넥션에서 요청이 들어오면 CPU 부하가 높아짐
    • Nginx가 정적 파일에 관해 커넥션을 유지하고 스스로 처리한다. 그리고 동적 파일에 관한 요청만 아파치와 커넥션을 생성해서 아파치의 부하를 줄인다.

2. 마스터 프로세스, 워커 프로세스

  • Nginx는 설정파일을 읽고 워커 프로세스를 생성하는 역할을 하는 마스터 프로세스와, 실제로 유저 요청을 처리하는 워커 프로세스로 구성된다. 엔진엑스가 구동되면 마스터 프로세스는 정해진 숫자만큼의 워커 프로세스를 생성하고, 리슨 소켓(워커 프로세스와 통신할 수 있는 소켓 디스크립터)을 배정한다.

3. 이벤트 드리븐 (Event Driven)

  • TCP/UDP 커넥션 연결, 클라이언트의 Http Request 처리, 커넥션 종료 등의 절차를 이벤트 개념으로 취급하고 처리한다.
  • 처리해야할 작업이 순차적으로 담긴 working queue를 워커 프로세스가 처리하게 한다. 워커 프로세스는 쉬지않고 끊임없이 이벤트를 처리하게 된다.
  • 만약 오래 걸리는 작업이 들어오면 que의 작업들은 전부 대기해야하지만, 쓰레드 풀(Thread Pool)을 만들어 그런 작업들을 처리하도록 함. 때문에 다른 작업들을 처리할 수 있음
    • Thread Pool은 생성 비용이 비싼 스레드를 필요할 때 편하게 늘리기 위해 스레드를 미리 만들어놓고 필요한 작업에게 할당해주는 개념

4. 장단점

  • 장점
    • 프로세스를 적게 만들어서 가볍다
    • 트래픽 분산하여 부하를 줄임
    • 콘텐츠를 캐싱해서 결과를 더 빠르게 응답해서 성능을 높임
    • 서비스에서 실제 서버의 IP 주소를 필요로 하지 않기 때문에 보안이 좋음
    • 동적 설정 변경 가능
  • 단점
    • 개발자가 직접 모듈을 만들기가 까다로움
profile
SSAFY 7기. HMG. 협업, 소통, 사용자중심

0개의 댓글