WEB Server - NGINX HTTP 설정 - CentOS 7
WEB Server - NGINX HTTP 설정 - CentOS 7
이전 포스팅에서 설치 및 서비스 제어 등등 알아보았고 이제 부터 본격적으로 NGINX에 설정 및 최적화을 진행하려면 설정하기에 NGINX에 환경설정 구조를 파악해야 됩니다
이번 포스팅에서는 NGINX의 설정 파일의 구조는 어떻게 되어 있고 서버에 맞게 최적화하려면 어떻게 부분을 조작해야 되는지 알아보도록 하겠습니다.
이전 글 :
서버와 클라이언트 그리고 HTTP - https://server-talk.tistory.com/291
WEB Server - NGINX HTTP 설정 - CentOS 7 https://server-talk.tistory.com/304
NGINX 모듈 기본 구조 |
위 그림은 NGINX의 대략적인 구조 입니다 NGINX는 핵심 모듈(Core Moudle), 이벤트 모듈(Event Module), 구성 모듈(Configuration Module)로 구성되어 있습니다.
1. 핵심 모듈(Core Module)
worker_processes 2;
work_processes 같은 nginx.conf 파일의 최상단에 위치하고 기본 적인 방식을 정의 합니다.
2. 이벤트 모듈(Event Module)
events { worker_connections 1024; }
NGINX에서 이벤트 모듈은 nginx.conf 설정 파일에서 events 블록 안에 정의 합니다.
3. 구성 모듈 (Configuration Module)
include mime.types; include sites-available/*.conf;
NGINX에서 include 를 통해 다른 파일들을 포함할 수 있게 해주는 모듈 입니다.
4. HTTP 모듈
HTTP 구성하는데 사용되는 필수 구성요소와 가상 호스트 등등 HTTP 구성하는 모든 설정을 담당합니다
NGINX 모듈 정보
핵심 모듈(Core Module) : NGINX 의 프로세스관리, 보안, 필수 기능 등등 설정하는 부분 입니다
이벤트 모듈(Event Module) : NGINX가 네트워크 동작방법에 설정하는 부분 입니다
구성 모듈 (Configuration Module) : NGINX에서 구조 Include를 통해 외부 파일을 포함 시키는 부분입니다
HTTP 모듈 : NGINX에서 웹사이트를 설정하는 부분 입니다
NGINX 기본 튜닝 |
1. NGINX 프로세스 사용자 및 그룹
설정 : user [사용자] [그룹명];
기본값 : NGINX 컴파일시 지정됩니다
설명 : 보안적인 이유로 NGINX에 전용 사용자 그룹을 만들고 보안에 문제가 되지 않는 선에서 적절한 권한을 주어야 되며, 그룹명은 필수는 아닙니다.
2. NGINX 프로세스 개수
설정 : worker_processes [숫자];
권장 값 : worker_processes auto;
설명 : 프로세스 수를 지정입니다 CPU 코어당 1개의 프로세스를 갖도록 설정하거나 auto로 설정하여 NGINX에서 CPU 코어 수를 감지하여 설정하는 방법도 좋습니다.
3. NGINX 404 에러 로그
설정 : log_not_found [on or off];
권장 값 : log_not_found on;
설정 : 404 에러 남길 여부 입니다 검색봇 및 수많은 로그가 쌓이므로 off로 하여 적용하여 로그를 남기지 않는 것이 좋습니다
4. NGINX 프로세스당 연결수
설정 : worker_connections [숫자];
기본값 : worker_connections 1024;
설명 : NGINX에서 프로세스당 동시에 연결 수 입니다 예로 사용중인 서버가 CPU 코어가 2개라면 worker_processes 2개로 지정하였을 경우 연결수를 worker_processes * worker_connections 로 2048개의 동시 연결을 처리 할수 있습니다
NGINX HTTP 모듈 |
NGINX는 HTTP 모듈은 3개의 블록으로 구성됩니다
위 그림과 같이 NGINX는 HTTP, SERVER, LOCATION 구성 됩니다
NGINX HTTP 모듈 블록
HTTP 블록 : NGINX 구성 파일의 최상위에 삽입되며, SERVER, LOCATION의 상위 블록입니다 설정된 값은 하위 블록에 상속 됩니다.
SERVER 블록 : 웹사이트를 추가하는 1개를 선언하는데 사용되며, SERVER 블록을 여러 개 만들어서 동시에 여러 사이트 운영이 가능합니다.
LOCATION : SERVER 블록 안에 특정 위치 디렉토리 URL 조작을 처리하는데 사용됩니다.
http { include mime.types; sendfile on; keepalive_timeout 65; default_type application/octet-stream; server { listen 192.168.85.177:80; server_name server-talk.com; root /home/server_talk/public_html; access_log /usr/local/nginx/logs/server-talk.com.access.log; error_log /usr/local/nginx/logs/server-talk.com.error.log; error_page 404 /50x.html; location / { root html; index index.html index.htm; } } }
사용블록 : HTTP
사용법 : sendfile [on or off];
설명 : sendfile 커널 호출을 사용하여 파일을 전송하며, 물리적인 위치에 따라 성능에 영향을 미칩니다.
사용블록 : HTTP
사용법 : server_tokens [on or off];
설명 : NGINX를 버전 알릴지의 여부 입니다. (보편적으로 off로 하여 알리지 않습니다.)
사용블록 : HTTP
사용법 : default_type application/octet-stream;
설명 : MIME 타입 기본 설정입니다.
사용블록 : HTTP, SERVER
사용법 : error_page [에러코드] /경로/문서파일이름.html;
설명 : 에러 페이지를 지정합니다.
사용블록 : SERVER
사용법 : listen [IP]:[포트];
설명 : Apache의 가상 호스트와 같이 IP를 지정하고 HTTP 80 포트나 HTTPS 443 포트를 지정합니다.
사용블록 : SERVER
사용법 : server_name [도메인] [도메인];
설명 : 서버의 도메인을 입력하는 부분 입니다.
사용블록 : SERVER
사용법 : root [경로];
설명 : 웹사이트의 경로를 지정하는 부분 입니다.
사용블록 : HTTP, SERVER
사용법 : access_log /[경로]/파일명.log;
설명 : 도메인의 access_log 설정 하는 부분 입니다.
사용블록 : HTTP, SERVER
사용법 : error_log /[경로]/파일명.log;
설명 : 도메인의 error_log 설정하는 부분 입니다.
사용블록 : HTTP, SERVER, LOCALTION
사용법 : index [파일명];
설명 : 홈페이지 접속했을 때 처음 페이지(기본 문서)를 지정하는 부분 입니다
3. LOCATION 블록 : LOCATION 블록을 통해 URI 특정 URL 조작할 수 있습니다. (내용이 많으므로 다음 포스팅에서 알아보도록 하겠습니다)