NGINX Plus

NGINX 및 NGINX Plus 구성 파일 만들기

지시문 및 컨텍스트를 포함하여 NGINX 또는 NGINX Plus 구성 파일의 기본 요소를 이해합니다.

NGINX와 NGINX Plus는 특정 형식으로 작성된 텍스트 기반 구성 파일을 사용한다는 점에서 다른 서비스와 유사합니다. 기본적으로 파일 이름은 nginx.conf이며, NGINX Plus의 경우 /etc/nginx 디렉터리에 위치합니다. (NGINX Open Source의 경우 위치는 NGINX 설치에 사용된 패키지 시스템과 운영 체제에 따라 다릅니다. 일반적으로 /usr/local/nginx/conf, /etc/nginx 또는 /usr/local/etc/nginx 중 하나입니다.)

목차

1. 지시문
2. 기능별 구성 파일

3. 컨텍스트
3-1. 가상 서버
3-2. 여러 컨텍스트가 포함된 샘플 구성 파일
3-3. Inheritance
4. 구성 Reload

1. 지시문

구성 파일은 지시문과 해당 매개변수로 구성됩니다. 간단한 (한 줄) 지시문은 각각 세미콜론으로 끝납니다. 다른 지시문은 중괄호( { } );로 묶어 관련 지시문을 그룹화하는 “컨테이너” 역할을 하며, 이를 흔히 블록이라고 합니다. 다음은 간단한 지시문의 몇 가지 예입니다.

user             nobody;
error_log        logs/error.log notice;
worker_processes 1;

2. 기능별 구성 파일

구성을 더 쉽게 유지 관리하려면 구성을 /etc/nginx/conf.d 디렉터리에 저장된 기능별 파일 집합으로 분할하고 기본 nginx.conf 파일에 include 지시문을 사용하여 기능별 파일의 내용을 참조하는 것이 좋습니다.

include conf.d/http;
include conf.d/stream;
include conf.d/exchange-enhanced;

3. 컨텍스트

컨텍스트라고 하는 몇 가지 최상위 지시문은 서로 다른 트래픽 유형에 적용되는 지시문을 함께 그룹화합니다.

  • events – 일반적인 연결 처리
  • http – HTTP 트래픽
  • mail – Mail 트래픽
  • stream – TCP 및 UDP 트래픽

이러한 컨텍스트 내에 배치된 지시문은 Main 컨텍스트에 있다고 합니다.

3-1. 가상 서버

각 트래픽 처리 컨텍스트에서 하나 이상의 server 블록을 포함하여 요청 처리를 제어하는 가상 서버를 정의합니다. server 컨텍스트에 포함할 수 있는 지시문은 트래픽 유형에 따라 다릅니다.

HTTP 트래픽(http 컨텍스트)의 경우 각 server 지시문은 특정 도메인 또는 IP 주소에서 리소스에 대한 요청을 처리하는 것을 제어합니다. server 컨텍스트의 하나 이상의 location 컨텍스트는 특정 URI 집합을 처리하는 방법을 정의합니다.

mail 및 TCP/UDP 트래픽( mailstream 컨텍스트)의 경우 server 지시문은 각각 특정 TCP 포트 또는 UNIX 소켓에 도착하는 트래픽의 처리를 제어합니다.

3-2. 여러 컨텍스트가 포함된 샘플 구성 파일

다음 구성은 컨텍스트의 사용법을 보여줍니다.

user nobody; # a directive in the 'main' context

events {
    # configuration of connection processing
}

http {
    # Configuration specific to HTTP and affecting all virtual servers  

    server {
        # configuration of HTTP virtual server 1       
        location /one {
            # configuration for processing URIs starting with '/one'
        }
        location /two {
            # configuration for processing URIs starting with '/two'
        }
    } 
    
    server {
        # configuration of HTTP virtual server 2
    }
}

stream {
    # Configuration specific to TCP/UDP and affecting all virtual servers
    server {
        # configuration of TCP virtual server 1 
    }
}

3-3. Inheritance

일반적으로 다른 컨텍스트(부모) 안에 포함된 자식 컨텍스트는 부모 Level에 포함된 지시문의 설정을 상속합니다. 일부 지시문은 여러 컨텍스트에 나타날 수 있으며, 이 경우 하위 컨텍스트에 지시문을 포함시켜 부모로부터 상속된 설정을 재정의할 수 있습니다. 예는 proxy_set_header 지시문을 참조하세요.

4. 구성 Reload

구성 파일의 변경 사항을 적용하려면 해당 파일을 Reload해야 합니다. nginx 프로세스를 다시 시작하거나 reload 시그널을 전송하여 현재 요청 처리를 중단하지 않고 구성을 업그레이드할 수 있습니다. 자세한 내용은 런타임 시 NGINX 프로세스 제어를 참조하세요.

NGINX Plus를 사용하면 구성을 Reload하지 않고도 Upstream 그룹의 서버에서 Load Balancing을 동적으로 재구성할 수 있습니다. 또한 NGINX Plus API와 Key-Value Store를 사용하여 클라이언트 IP 주소 등을 기반으로 액세스를 동적으로 제어할 수 있습니다.