새소식

반응형
Nginx

[Nginx] Nginx 설정

  • -
반응형

Nginx에 대한 개념은 아래의 포스팅에서 간단하게 알아보았고, 다음으로 Nginx의 설정 값들에 대해서 알아보도록 하겠습니다. ( https://kkang-joo.tistory.com/29 )

 

Nginx의 동작 방식은 configuration file에 의해서 결정됩니다.

해당 configuration file이 nginx.conf 파일입니다.

 

일반적으로 많이 사용하는 apt-get을 이용하여 설치하는 경우 "/etc/nginx"에서 찾을 수 있습니다.

mac에 brew를 이용하여 설치한 경우에는 "brew ls nginx" 명령어를 치시면 설치된 위치를 확인할 수 있습니다.

 

nginx 설정은 nginx 공식 홈페이지에 설명이 되어있는데, 그중에서 자주 사용되는 설정들을 간단하게 알아보도록 하겠습니다. (http://nginx.org/en/docs/ngx_core_module.html)

 

기본 설정

worker_processes  1;
events {
	worker_connections  1024;
}
http {
	include       mime.types;
	server {
		listen       80;
		location / {
			root   html;
			index  index.html index.htm;
		}    
	}
}

흔하게 볼 수 있는 기본 설정입니다.

위의 설정은 크게 5가지 영역으로 구분 할 수 있습니다.

  1. Core 모듈
    • 설정 파일의 최상단에 위치하고, nginx의 기본적인 동작 방식을 정의합니다
  2. http블록
    • 웹 서버에 대한 동작을 설정하는 영역입니다.
  3. server 블록
    • 하나의 웹 사이트를 선언하는데 사용횝니다
      가상 호스팅(virtual host)의 개념
  4. location 블록
    • server 블록 내에서 특정 URL을 처리하는 방법을 정의합니다
  5. events 블록
    • 주로 네트워크 동작에 관련된 설정을 하는 영역입니다

Core 블록

user  nginx;         
worker_processes  2; 
worker_priority   0; 
# 로그레벨 [ debug | info | notice | warn | error | crit ]
error_log  /var/log/nginx/error.log error; 
pid        /var/run/nginx.pid;

 

user 

NGINX 프로세스가 실행되는 권한, root 권한은 보안상 위험함

 

worker_priority   

worker 프로세스의 우선순위 설정

값이 작을 수록 높은 우선순위를 갖습니다.

커널 프로세스의 기본 우선순위인 -5 이하로는 설정하지 않도록 해야 합니다.

 

work_processes

nginx의 실행 가능한 worker 프로세스의 수를 지정해 줄 수 있습니다.

nginx는 master와 worker프로세스로 구성되어지는데요.

공식문서에 의하면, 최적 값은 cpu core에서부터 하드 드라이브 등 여러 가지 요소에 의해서 결정되어지는데요.

auto로 설정하면 자동으로 이 값을 찾아준다고 합니다.

 

error_log

에러 로그 파일의 위치와 로그 레벨을 지정합니다.

 

pid

nginx 마스터 프로세스 id정보가 저장됩니다.

 

http 블록

http { 
    include       mime.types;
    default_type  application/octet-stream;
    
    upstream back-server {
        server 127.0.0.1:3000;
        keepalive 32;
    }
    
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;

    server_tokens     off;
    keepalive_timeout  65;
    charset utf-8;
    
    server {
        ...
    }
}

include

다른 파일의 설정을 가져올 수 있습니다.

 

default_type

http의 기본 타입을 설정할 수 있습니다.

 

upstream

upstream 서버  설정

인자로 upstream서버의 이름을 넣어주면 됩니다.

서버들은 TCP이든 UNIX 도메인 소켓이든 모두 listen 할 수 있습니다.

 

위의 예시에서는 back-server라는 이름으로, 내부의 3000 포트 서버로 연결시켜 주도록 하였습니다.

keepalive를 하는 이유는 proxy서버로부터, 다시 로컬의 서버로 연결될 때,

접속이 다시 생성됨으로 인한 비효율을 막기 위해서 입니다.

 

log_format, access_log

로그 포멧을 통해 어떠한 정보를 로그에 남길 것인지 설정을 할 수 있습니다.

access_log 설정을 통해서 어느 위치에 로그를 남길 건지, 어떠한 레벨로 남길지 설정합니다.

위의 예시에서는 log_format을 통해 정의한 내용을 access_log에 적용하였습니다.

 

server_tokens

헤더에 nginx버전을 숨기는 기능을 합니다

보안상 off 설정을 권장합니다.

 

keepalive_timeout

접속 시 유지 시간을 지정합니다.

 

charset

charset을 설정하는 값, 한글을 지원하기 위해서는 utf-8을 사용해야 한다.

 

gzip 설정

// TODO

map을 이용한 allowed_referer

// TODO

 

아래 남은 3가지 블록은 다음 포스팅을 통해서 정리하도록 하겠습니다.

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.