[Nginx] config 정리

Nginx 2022. 7. 26. 16:10

경로

/etc/nginx/nginx.conf

user  nginx;
worker_processes  10;


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


events {
    worker_connections  1024;
}


http {
    include       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"';

    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;
    sendfile        on;
    keepalive_timeout  1200;

#    large_client_header_buffers 4 16k;
    client_max_body_size 200M;
    proxy_connect_timeout 600;
    proxy_send_timeout 600;
    proxy_read_timeout 600;
    send_timeout 600;
    fastcgi_send_timeout 600;
    fastcgi_read_timeout 600;


    charset utf-8;

    include /etc/nginx/conf.d/*.conf;
}
  • user: nginx의 worker process가 실행되는 user권한. 공백을 구분자로 두번째 값을 써줄 수 있는데, 이는 group을 의미하며, 생략시 user와 같은 그룹을 사용한다.(기본값 nobody)
  • worker_processes: worker process의 수를 의미. 최적값은 하드웨어의 코어수, 하드드라이브 이용률 및 로드패턴 등과 복잡하게 얽혀 있어서 일반적으로 코어수와 동일하게 맞추는것을 권장한다.(기본값 1)
  • error_log: 로그파일 경로와 남기고자 하는 심각도 레벨. (기본값 logs/error.log) 레벨은 다음 값 중 하나이다.(심각도 오름차순)(기본값 error)
    debug, info, notice, warn, error, crit, alert, or emerg
  • pid: nginx main process(=master process)의 pid 저장 파일경로(기본값 logs/nginx.pid)
  • events.worker_connections: 한개의 worker process가 동시에 오픈할 수 있는 최대 연결 갯수. client 와의 연결만 포함하는게 아니고, 모든 connection을 포함한다. (주의)worker_rlimit_nofile 값을 초과해서 세팅하면, worker_rlimit_nofile 값이 우선시된다.(기본값 512)
  • http.include: http 블록에 가져올 context 파일 경로.(여기서는 mimetype 정의 파일 - mimetype 목록과 파일 확장명)
  • http.default_type: mimetype 중에 기본값으로 사용할 값(여기서는 application/octet-stream)
  • http.log_format: 로그포멧 이름과 형식 지정. 가상호스트 설정시 로그파일 뒤에 로그포멧 이름을 지정하면 해당 포멧대로 로그가 쌓인다.(여기서는 main이 로그포멧 이름)
  • http.server_tokens: off로 설정시 response 의 Server 헤더값에서 nginx 버전을 지워준다.(보안상 이점)
  • http.sendfile: on으로 설정시 read/write시 하드디스크 io를 일으키지 않고 커널 내부에서 파일을 복사하여 속도 향상
  • http.keepalive_timeout: 서버에 접속시 클라이언트와 커넥션을 열린채로 유지하는 시간.(0으로 잡으면 keepalive 비활성)
  • http.client_max_body_size: 파일 업로드 제한용량. 파일 업로드시 http 응답코드 413 (equest Entity Too Large)인 경우 이를 설정하면 해결됨.
  • http.proxy_connect_timeout: 프록시 서버와 연결(establishing)시 timeout. 모든 서버에 대해 적용됨. server나 location 컨텍스트에서 재정의 가능
  • http.proxy_send_timeout: 프록시 서버에 요청시 timeout. 모든 서버에 대해 적용됨. server나 location 컨텍스트에서 재정의 가능
  • http.proxy_read_timeout: 프록시 서버에 요청 후 응답을 기다리는 timeout. 모든 서버에 대해 적용됨. server나 location 컨텍스트에서 재정의 가능
  • http.send_timeout: 클라이언트에 응답을 보내는 timeout.
  • http.fastcgi_send_timeout: fastcgi 프로토콜로 프록시 서버에 요청시 timeout.
  • http.fastcgi_read_timeout: fastcgi 프로토콜로 프록시 서버에 요청 후 응답을 기다리는 timeout.
  • http.charset: 문자셋 설정

 

 

 

 


https://gist.github.com/goodGid/19aceb989a86adbb4560e976cf437453

 

Nginx Conf

Nginx Conf. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

http://nginx.org/en/docs/ngx_core_module.html

 

Core functionality

Core functionality Example Configuration user www www; worker_processes 2; error_log /var/log/nginx-error.log info; events { use kqueue; worker_connections 2048; } ... Directives Syntax: accept_mutex on | off; Default: accept_mutex off; Context: events If

nginx.org

https://www.nginx.com/nginx-wiki/build/dirhtml/start/topics/examples/full/

 

Full Example Configuration | NGINX

Full Example Configuration nginx.conf user www www; ## Default: nobody worker_processes 5; ## Default: 1 error_log logs/error.log; pid logs/nginx.pid; worker_rlimit_nofile 8192; events { worker_connections 4096; ## Default: 1024 } http { include conf/mime.

www.nginx.com

 

블로그 이미지

망원동똑똑이

프로그래밍 지식을 자유롭게 모아두는 곳입니다.

,

입력을 필터링하고, 필터링된 데이터를 원하는 포멧으로 출력하기 위한 리눅스 빌트인 프로그램(명령어)은 주요하게 3가지가 있다.

grep, sed, awk

 

grep은 보통 입력에서 원하는 패턴 또는 문자열이 포함된(또는 포함되지 않은) 라인만 출력하기 위해 사용된다.

이번 글에서는 sed와 awk의 주요 명령어 사용형식에 대해서 정리한다.

 

1. sed

패턴에 일치(또는 라인번호에 일치)하는 라인에 대해 어떤 처리(치환, 삭제) 후 출력한다.

 

치환 : sed '[/패턴 or 라인범위/]s/pattern1/pattern2/g' 대상파일(pattern2를 빈값으로 하면 일치하는 텍스트만 삭제되는 효과)

일치 라인만 출력 : sed -n '/패턴 or 라인범위/p' 대상파일

삭제후 나머지 라인 출력 : sed '/패턴 or 라인범위/d' 대상파일

 

2. awk

*** 잘쓰면 개유용함***

패턴이나 조건에 일치하는 라인에 대해 (공백 또는 탭을 기준으로-default)각 필드를 포멧팅 하여 출력한다. 프로그래밍적 문법과 연산도 지원하기 때문에 복잡한 데이터 가공까지 가능하다.

 

awk '[/패턴/ or 필드조건][{printf "포멧지정자 포함 텍스트",$필드위치변수 > "출력파일"}]' 대상파일

awk -f awk명령어파일 대상파일

awk 'BEGIN{awk내장함수 or 명령어 | getline item;awk처리액션...}[/패턴/ or 필드조건]{레코드별 액션}END{모든행 처리 후 액션}'

*BEGIN만 사용하면 입력파일 없이 액션 부분에 쉘 명령어를 사용하여 원하는 출력을 만들어낼 수 있다.

*awk 빌트인 변수와 빌트인 함수를 잘 사용하면 강려크하다.

 

3. 유용한 awk 빌트인 함수

3.1. 문자열함수

sub, gsub, index, length, substr, match, split, sprint, toupper, tolower

3.2. 수학함수

int, log, rand, srand, sin, cos

3.3. 시간함수

systime, strftime

3.4. 입력읽기 함수

getline: 파이프라인(|) 뒤에서 앞 명령어로 출력된 라인을 입력받거나, 장치(파일)로부터 앞에서 입력리다이렉션(<)을 받는다.

반환값은 입력된 라인이 존재하면 1, 존재하지 않으면 0, 에러시 -1 이다.(falsy 값이므로 루프나 조건문에 사용가능)

e.g. "date" | getline d; getline data < "/dev/tty"; getline data < "/etc/passwd"

3.5. 리눅스 명령어 실행함수

system

 

4. 유용한 awk 빌트인 변수

NF: 현재 레코드 필드 갯수

 

NR: 현재 레코드 번호(1부터 시작)

FNR: 파일의 전체 레코드 갯수

 

FS: 입력필드 분리자(기본값 공백)

OFS: 출력필드 분리자(기본값 공백)

 

RS: 입력레코드 분리자(기본값 newline: \n)

ORS: 출력레코드 분리자(기본값 newline: \n)

 

RLENGTH: match 함수에 의해 매칭된 문자열 길이

RSTART: match 함수에 의해 매칭된 문자열의 offset(매칭시작인덱스)

 

IGNORECASE: 정규표현식과 문자 비교처리시 대소문자 구분여부(0: 구분안함, 1: 구분함. 기본값 1)

ARGC: 인자갯수

ARGV: 인자배열

 

 

 

e.g. 특정 필드의 값이 특정 패턴에 매칭되면 수행하는 awk

netstat.awk
#!/bin/awk
BEGIN{
        pring "BEGIN\n";
        cnt = 0;
}
{
        if ($3 ~ /S/) {
                cnt++;
                printf "NO:%d.\tNR:%d.\tFNR:%d\t%s\n", cnt, NR, FNR, $0;
        }
}
END{
        printf "cnt: %d\nEND\n", cnt;
}
netstat.txt

(읽을 파일 만들기)

netstat -r > netstat.txt

 

확인커맨드

awk -f netstat.awk netstat.txt
블로그 이미지

망원동똑똑이

프로그래밍 지식을 자유롭게 모아두는 곳입니다.

,

env : 환경변수 출력

source 파일경로 : 해당 파일을 즉시 설정으로 적용

du 파일경로 : 해당 파일의 용량 표시

    -h : 용량을 보기쉬운 단위로 표현

su : 슈퍼유저로 로그인 시도

    - : 모든 환경변수도 전환

which 실행기(언어) : 환경변수의 PATH 경로에 존재하는 실행파일의 위치를 검색하여 출력

whereis 실행기(언어) : which 와 비슷함.(자세한건 모르겠음)

 

블로그 이미지

망원동똑똑이

프로그래밍 지식을 자유롭게 모아두는 곳입니다.

,