NGINX

Beginner’s Guide

nginx는 하나의 master process(마스터 프로세스)와 여러 worker process(워커 프로세스)를 가진다. 마스터 프로세스의 주요 목적은 configuration(구성)을 읽고 평가하고, 워커 프로세스를 유지하는 것이다. 워커 프로세스는 실제로 requests(요청) 처리를 수행한다. nginx는 이벤트 기반 모델과 OS 종속 매커니즘을 사용하여 워커 프로세스간에 요청을 효과적으로 분배한다. 워커 프로세스의 수는 configuration file(구성 파일)에 정의되며 주어진 구성에 맞게 고정하거나 사용가능한 CPU 코어의 수에 맞게 자동으로 조절

nginx와 그 모듈이 작동하는 방식은 configuration file(구성 파일)에서 결정된다. 기본적으로 구성 파일의 이름은 nignx.conf이며, /usr/local/nginx/conf, /etc/nginx 또는 /usr/local/etc/nginx 디렉토리에 있습니다.

Starting, Stopping, and Reloading Configuration

Configuration File’s Structure

nginx는 구성 파일에 명시된 directives(지시)에 의해 제어되는 모듈로 구성된다. 지시는 simple directives(간단한 지시)와 block directives(블록 지시)로 나눈다. 간단한 지시는 이름파라미터로 구성되며 세미콜론(;)으로 끝난다. 블록 지시는 간단한 지시와 구조가 동일하지만 세미콜론 대신 중괄호({ and })로 묶인 일련의 추가 명령어로 끝난다.

# 기호는 주석이다.

Serving Static Content

중요한 웹 서버 작업은 파일(예: 이미지, 정적 HTML 페이지)을 제공하는 것이다. 요청에 따라 /data/www(HTML 파일 포함)과 /data/images(이미지 포함)의 서로 다른 로컬 디렉토리에서 파일을 제공하는 예제를 구현한다.

http {
  server {
    location /{
      /data/www;
    }
    location /images/{
      /data;
    }
  }
}

Setting Up a Simple Proxy Server

nginx를 자주 사용하는 방법 중 하나는 프록시 서버로 설정하는 것이다. 이는 요청을 수신해 proxied servers(프록시 서버)로 전달하고 응답을 검색해 클라이언트로 보낸다.

로컬 디렉토리에 있는 파일로 images 요청을 처리하고 다른 모든 요청을 proxied servers(프록시 서버)로 보내는 기본 프록시 서버를 구성한다. 이 예제에서 두 서버는 단일 nginx 인스턴스에 정의됩니다.

http {
  server {
    listen 8080;
    /data/up1;

    location /{
    }
  }
}

이것은 8080 포트에서 수신하는 간단한 서버가 될 것이고, 모든 요청을 /data/up1 로컬 디렉토리에 맵핑 할 것이다. 이 디렉토리를 만들고 index.html 파일을 그 안에 넣는다. 루트 지시문은 서버 컨텍스트에 배치된다.

그 다음, Serving Static Content 섹션에서 작성한 server 구성을 사용하여 프록시 서버 구성으로 변경한다. 첫 번째 location 블록에 지정된 proxied server(프록시 서버)의 프로토콜, 이름 및 포트를 proxy_pass의 매개변수에 입력한다.

http {
  server {
    location /{
        proxy_pass http://localhost:8080;
    }
    location /images/{
        /data;
    }
  }
}

현재 /images/ 접두사가있는 요청을 /data/images 디렉토리 아래의 파일로 매핑하고 있다. 두 번째 location 블록을 수정하여 이미지 확장자명을 가진 요청과 일치하게 만든다.

http {
  server {
    location /{
        proxy_pass http://localhost:8080;
    }
    location ~\.(gif|jpg|png)${
        /data/images;
    }
  }
}