DevOps/NGINX
NGINX MSA 디지털 트레이닝 - 1강. Context Logic
갈색왜성
2022. 2. 26. 16:05
반응형
NGINX에서 제공하는 디지털 트레이닝 코스 수강 하면서 정리한 내용이다.
1. NGINX 기본 명령어
- Version 확인 : nginx -v
[browndwarf@mymachine nginx]$ nginx -v nginx version: nginx/1.18.0
- 설정파일 syntax 유효성 검사 : nginx -t
[browndwarf@mymachine nginx]$ nginx -t nginx: the configuration file /home1/irteam/apps/nginx-1.18.0/conf/nginx.conf syntax is ok nginx: configuration file /home1/irteam/apps/nginx-1.18.0/conf/nginx.conf test is successful
- 현재 NGINX Instance의 설정 내용 확인 : nginx -T
[browndwarf@mymachine nginx]$ nginx -T nginx: the configuration file /home1/irteam/apps/nginx-1.18.0/conf/nginx.conf syntax is ok nginx: configuration file /home1/irteam/apps/nginx-1.18.0/conf/nginx.conf test is successful # configuration file /home1/irteam/apps/nginx-1.18.0/conf/nginx.conf: user irteam; worker_processes 2; ... events { worker_connections 2048; } ... # configuration file /home1/irteam/apps/nginx-1.18.0/conf/mime.types: types { text/html html htm shtml; text/css css; text/xml xml; image/gif gif; image/jpeg jpeg jpg; application/javascript js; ... }
- 설정 Reload : nginx -s reload
- Gracefule Shutdown : nginx -s quit
- Fast Shutdown : nginx -s stop
2. NGINX 설정 파일 위치
- Main 설정 파일 : /etc/nginx/nginx.conf
- 추가 설정 파일 위치 : /etc/nginx/conf.d/*.conf
- 여기에 포함된 설정 파일들을 nginx.conf에서 include 명령어로 포함시켜 설정에 반영시킨다. - NGINX 설정은 Context와 Directives(명령어)의 조합으로 구성되어 있다.
3. Configuration Context
Context 구조
Main Context
최상위 Level에서 worker process의 수, Linux Username, Process ID, Log file location 등을 정의한다.
# Default nginx.conf에서의 Main Context user nginx; worker_processes auto; ... error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; ... pid logs/nginx.pid;
Events Context
각 Worker 프로세스 마다 할당된 connection 수를 정의.
... events { worker_connections 1024; } ...
HTTP Context
NGINX가 HTTP/HTPS 연결을 어떻게 관리할 지에 대한 설정을 정의
- ex) Backend Server 및 Application Pool
여기서 설정한 사항들은 그 하위에 있는 Server, Upstream, Location context 등으로 상속된다.
Server Context
- Virtual Server(Virtual Host)를 정의 : Domain name, IP Address, Unix Socket 등
- Location Context
- Virtual Server가 수신한 http request에 대해 특정 URI에 기반해서 처리할 수 있게 정의.
Upstream Context
Load Balance 목적으로 Backend Server 연결 시에 정의
http { include mime.types; default_type application/octet-stream; ... access_log logs/host.access.log main; . . . upstream backend { server 192.168.100.101 weight =3; server 192.168.100.102; server 192.168.100.103; } . . . server { listen 80; server_name www.browndwarf.com; . charset UTF-8; . location / { root html; index index.html index.htm; } ... location /api/ { proxy_pass http://backend/api; } ... } ...
Stream Context
- Layer3/4 에서 TCP/UDP Traffic 설정을 정의
4. 명령어(Directives)와 Block
- Directive : NGINX 행동을 설정하는 문구. ex) listen, server_name
- Block : 중괄호 { } 로 묶은 Directives의 집합.
- 중요 Directives
- worker_processes : 실제 요청을 처리하는 Thread.
- worker_connections : 허용 connection 수.
- 최대 접속자 수 : worker_processes * worker_connections
- Reverse Proxy 사용시 : (최대접속자 수 / 4) < (ulimit -n의 결과값 ; open files)
- log_format : log 형식 지정
- access_log : access log file 위치
- include : 다른 설정 파일들 중에 포함시킬 파일을 지정.
- *.conf 와 같이 복수의 설정파일을 포함시킬 경우 알파벳 순서로 설정 파일이 적용됨.