[DevOps] Nginx Configuration 정리

[DevOps] Nginx Configuration 정리

안녕하세요? 정리하는 개발자 워니즈입니다. 이번시간에는 Nginx의 configuration에 대해서 정리를 해보고자 합니다. 필자의 프로젝트에서는 웹서버로 Nginx를 사용하고 있습니다. Nginx의 configuration의 변경이 매우잦은 편입니다. 주로 redirection에 대한 처리를 Nginx를 통해서 하다보니 엄청나게 크게 변경이 되는것은 아니지만 이번 포스팅을 통해서 Nginx에서 사용하는 설정에 대해서 정리를 해보고자 합니다 .

nginx_1

1. nginx의 동작 방식

nginx 의 가장 큰 특징은 비동기 Event Driven에 의한 Non Blocking 처리를 한다는 것입니다. apache 서버에 비해 메모리소모량이 젂어지면서 동시 처리수를 급격하게 늘릴 수 있습니다. 요청이 아무리 많아도 Process 또는 Thread 생성 비용이 존재하지 않습니다.

Single Thread 기반으로 Master / Worker 프로세스로 구동되면서 context switching을 하지 않기 떄문에 CPU 사용률을 감소 시킬 수 있습니다 .

먼저 apache의 동작 방식을 정리해보겠습니다.

nginx_3

  • Apache는 병렬 처리 동작방식은 기본적으로 Apache Process 기반 방식으로 클라이언트 요청들을 처리 합니다. 요청에 따라 프로세스를 생성하는 Multi Process Module-prefork 방식과 worker 방식이 있습니다.
  • 요청에 따라 Process가 늘어나고 한개의 요청 처리중 다른 처리를 위한 Context switching으로 인해 부하가 걸림.

다음은 nginx의 동작방식에 대해서 정리하겠습니다.

nginx_2

  • Event Driven 방식으로 클라이언트 요청 병렬처리를 진행합니다. 기본적으로 싱글 프로세스 기반으로 이벤트를 받는 reactor와 이벤트를 각 worker로 전달하는 handler로 구성되어 있습니다.
  • process를 prefork하는 과정이 없이 요청온 request에 대한 행동에 대해서만 각 worker로 넘기고 계속해서 요청을 받기 떄문에 처리가 빠릅니다.
  • 비동기 처리로 인한 메모리 사용이 효율적이다.

2. nginx configuration 정리

nginx 공식 document

  • 최상단 모듈 (Core)

  • http 블락

  • server 블락

하나의 server 블락은 하나의 가상 호스트를 구성합니다. 또한 한 개 이상의 location 블락을 삽입할 수 있습니다.

  • location 블락

3. 마치며..

이번시간에는 nginx의 설정에 대해서 간단히 정리를 해보았습니다. 이번 포스팅은 모든 지시어들을 다 정리하지는 않고,필자가 프로젝트에서 사용하는 지시어들 위주로 정리를 해보았습니다. 주로 reverse proxy 서버의 역할을 수행하면서 backend의 서버로 연결을 짓는 역할을 하고 있습니다.

또한 maps config를 통해서 redirection에 대한 처리와 error에 대한 처리도 같이 하고 있습니다. 이번 포스팅은 미완성으로 남겨두도록 하겠습니다. 앞으로 nginx에 대해 습득되는 지식에 대해서는 포스팅 업데이트를 하도록 하겠습니다. 다음시간에는 대비되는 웹서버인 apache에 대해서도 정리를 해보도록 하겠습니다.

4. 참고

Nginx와 Apache의 구동방식 비교

엔진엑스 기본 환경 설정

2 Replies to “[DevOps] Nginx Configuration 정리”

  1. 따라를 못하고 있지만..
    꾸준히 블로그 보고 있습니다. ^^
    홧팅하셔요!

    1. 엇!! 청규님께서 이렇게 댓글을 달아주시다니!! 영광입니다 ㅎㅎ
      부족한게 많은데 그래도 아는것들은 최대한 정리를 해두려고 합니다. ㅎㅎ
      좋게 봐주셔서 감사합니다~~

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다