본문 바로가기

💻 개발IT/Infra

[Nginx] nginx.conf, default.conf 정리

 

서버에 Nginx를 셋팅하면

/etc/nginx/nginx.conf 파일(리눅스 기준)이 생성된다.

 

nginx.conf

nginx.conf 파일은 Nginx 기본 설정 파일이다.

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    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;

    sendfile        on;

    keepalive_timeout  65;
    
    include /etc/nginx/conf.d/*.conf
}

 

user nginx

리눅스 서버에서 Nginx 프로세스가 실행되는 권한.

보안상 모든 파일의 권한을 가지고 있는 root를 사용하지 않고 별도의 사용자 계정을 생성함

 

worker_processes

워커 프로세스의 수로, 1이면 모든 요청을 1개의 프로세스로 실행한다는 것을 의미.

CPU 멀티 코어 시스템에서 1이면 하나의 코어만으로 요청을 처리하는 것이 되고 보통 코어 수에 맞춰 설정 권장

만약 잘 모를 경우 auto로 설정하여 자동 감시 가능

worker_processes  1;
더보기

※ process

Nginx는 master process(1개), worker process(N개)로 구성.

  • master process : 설정 파일 읽기, worker process 관리
  • worker process : 모든 사용자의 요청 처리 

 

worker_priority

값이 작을수록 높은 우선순위를 가지며 커널 프로세스의 기본 우선순위인 -5이하로 설정하지 않도록 권장

worker_priority	 0;

 

error_log

nginx의 에러로그가 쌓이는 path와 로그레벨(debug, info, notice, warn, error 등)을 설정

error_log  /var/log/nginx/error.log warn;

 

pid

nginx의 마스터 프로세스 아이디가 저장되는 path 설정

pid        /var/run/nginx.pid;

 

worker_connections

위에서 설정한 하나의 worker process가 동시에 처리할 수 있는 커넥션(접속자)의 수 설정(default는 1024)

events {
    worker_connections  1024;
}

 

include

포함시킬 외부 configuration 파일 설정.

해당 파일들이 include 위치에 삽입됨

  • mime.types : 파일에 작성되어진 내용들을 현재 파일로 가지고 오는 것
  • conf.d/*.conf : conf 파일(서버 속성 정의)을 포함한다는 것을 의미하며 default.conf도 포함
http {
    include       /etc/nginx/mime.types;
    include      /etc/nginx/conf.d/*.conf;
}

 

default_type

웹서버의 기본 Content-Type 정의

http {
    default_type  application/octet-stream;
}

 

upstream

WAS 서버의 ip, port 지정

upstream docker-server {
    server server:8080;
}

 

 

log_format

로그 형식 지정

http {
    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

접속 로그가 쌓이는 path 설정

http {
    access_log  /var/log/nginx/access.log  main;
}

 

sendfile

sendfile는 한 파일의 디스크립터와 다른 파일의 디스크립터 간에 데이터를 복사하는 것으로 커널 내부에서 복사 진행

http {
    sendfile        on;
    # sendfile        off;
}

 

keepalive_timeout

커넥션 연결이 유지될 시간 정의

값이 높게 설정되면 커넥션이 불필요하게 유지되기 때문에 낮은 값 설정 권장 

http {
    keepalive_timeout  65;
}

 

server_tokens

header에서 nginx 버전을 보여줄 것인지 설정. 보통 보안상 off 설정

http {
	server_tokens	off;
}

 

default.conf

하나의 웹 사이트를 선언하는 데 사용하며, server 블록이 여러개면 한 host 주소에 여러 웹 사이트를 연결 가능

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

 

listen

해당 포트(80)로 들어오는 요청을 server 블록으로 처리한다는 것을 의미 

server {
    listen       80;
    # http포트인 80번 포트를 통해 들어오는 요청을 해당 블록의 내용에 맞게 처리한다.
}

 

server

사용자가 test.com으로 접속하여 요청이 오면 root 위치 페이지를 서비스

server {
    server_name		test.com;
    root  	        /var/www/test.com
}

 

error_page

http 상태코드일 경우 해당 url로 이동

server {
    error_page   500 502 503 504  /50x.html;
    
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

 

location 

특정 url을 처리하는데 사용하며 여러 개 사용 가능

만약 location / 일 경우, 처음 요청이 들어왔을 때 보여줄 페이지 지정

  • root : static file이 있는 path
server {
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}
반응형