ngx_http_core_module

Directives

Syntax:  absolute_redirect on | off;
Default: absolute_redirect on;
Context: http, server, location
This directive appeared in version 1.11.8.

이 λͺ…령을 λΉ„ν™œμ„±ν™”ν•  경우, nginxμ—μ„œ 보낸 λ¦¬λ””λ ‰μ…˜μ€ μƒλŒ€μ μ΄ λ©λ‹ˆλ‹€.

server_name_in_redirect 및 port_in_redirect λͺ…령도 μ°Έμ‘°ν•˜μ„Έμš”.

Syntax:  aio on | off | threads[=pool];
Default: aio off;
Context: http, server, location
This directive appeared in version 0.8.11.

FreeBSD 및 Linuxμ—μ„œ 비동기식 파일 I/O(AIO)의 μ‚¬μš©μ„ ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

location /video/ {
    aio            on;
    output_buffers 1 64k;
}

FreeBSD 4.3λΆ€ν„° AIOλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. FreeBSD 11.0 이전에 AIOλŠ” μ»€λ„λ‘œ κ³ μ • μ—°κ²°ν•˜κ±°λ‚˜,

options VFS_AIO

μ»€λ„λ‘œ λ‘œλ“œ κ°€λŠ₯ν•œ λͺ¨λ“ˆλ‘œ λ™μ μœΌλ‘œ λ‘œλ“œν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

kldload aio

Linuxμ—μ„œ AIOλŠ” 컀널 버전 2.6.22λΆ€ν„° μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, directioλ₯Ό ν™œμ„±ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€. κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ 읽기가 μ°¨λ‹¨λ©λ‹ˆλ‹€.

location /video/ {
    aio            on;
    directio       512;
    output_buffers 1 128k;
}

Linuxμ—μ„œ directioλŠ” 512λ°”μ΄νŠΈ 경계(XFS의 경우 4K)μ—μ„œ μ •λ ¬ 블둝을 μ½λŠ” 데만 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 파일의 λΉ„μ •λ ¬ 끝단은 차단 λͺ¨λ“œμ—μ„œ μ½μŠ΅λ‹ˆλ‹€. λ°”μ΄νŠΈ λ²”μœ„ μš”μ²­κ³Ό 파일 μ²˜μŒμ—μ„œ μ œκ³΅ν•˜μ§€ μ•ŠλŠ” FLV μš”μ²­λ„ λ§ˆμ°¬κ°€μ§€μž…λ‹ˆλ‹€. 파일 μ‹œμž‘κ³Ό 끝에 λΉ„μ •λ ¬ 데이터λ₯Ό μ½λŠ” 것이 μ°¨λ‹¨λ©λ‹ˆλ‹€.

AIO 및 sendfile을 Linuxμ—μ„œ ν™œμ„±ν™”ν•˜λ©΄, AIOλŠ” directio λͺ…λ Ήμ—μ„œ μ§€μ •λœ 크기 μ΄μƒμ˜ νŒŒμΌμ— μ‚¬μš©ν•˜κ³  그보닀 파일 μš©λŸ‰μ΄ μž‘κ±°λ‚˜ directioλ₯Ό λΉ„ν™œμ„±ν™”ν–ˆμ„ λ•Œ sendfile을 μ‚¬μš©ν•©λ‹ˆλ‹€.

location /video/ {
    sendfile       on;
    aio            on;
    directio       8m;
}

λ§ˆμ§€λ§‰μœΌλ‘œ μž‘μ—…μž ν”„λ‘œμ„ΈμŠ€λ₯Ό μ°¨λ‹¨ν•˜μ§€ μ•Šκ³  λ©€ν‹° μŠ€λ ˆλ“œ(1.7.11)λ₯Ό μ‚¬μš©ν•˜μ—¬ νŒŒμΌμ„ 읽고 전솑할 수 μžˆμŠ΅λ‹ˆλ‹€.

location /video/ {
    sendfile       on;
    aio            threads;
}

파일 읽기 및 전솑 μž‘μ—…μ€ μ§€μ •λœ ν’€μ˜ μŠ€λ ˆλ“œλ‘œ λ³΄λƒ…λ‹ˆλ‹€. ν’€ 이름을 μƒλž΅ν•˜λŠ” 경우, 이름이 “default”인 풀을 μ‚¬μš©ν•©λ‹ˆλ‹€. ν’€ 이름은 λ³€μˆ˜λ₯Ό ν¬ν•¨ν•΄μ„œ μ„€μ •ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

aio threads=pool$disk;

기본적으둜 λ©€ν‹° μŠ€λ ˆλ“œλŠ” λΉ„ν™œμ„±ν™”λ˜λ―€λ‘œ –with-threads ꡬ성 λ§€κ°œλ³€μˆ˜λ‘œ ν™œμ„±ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€. ν˜„μž¬ λ©€ν‹° μŠ€λ ˆλ“œ μ²˜λ¦¬λŠ” epoll, kqueue 및 eventport λ©”μ„œλ“œμ™€λ§Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 파일의 λ©€ν‹° μŠ€λ ˆλ“œ 전솑은 Linuxμ—μ„œλ§Œ μ§€μ›λ©λ‹ˆλ‹€.

sendfile λͺ…령도 μ°Έμ‘°ν•˜μ„Έμš”.

Syntax:  aio_write on | off;
Default: aio_write off;
Context: http, server, location
This directive appeared in version 1.9.13.

aioλ₯Ό ν™œμ„±ν™”ν•œ 경우, 파일 μž‘μ„±μ— μ‚¬μš©ν• μ§€ μ§€μ •ν•©λ‹ˆλ‹€. ν˜„μž¬ aio threadsλ₯Ό μ‚¬μš©ν•  λ•Œλ§Œ μ‚¬μš©ν•  수 있으며, ν”„λ‘μ‹œλœ μ„œλ²„μ—μ„œ μˆ˜μ‹ ν•œ λ°μ΄ν„°λ‘œ μž„μ‹œ νŒŒμΌμ„ μž‘μ„±ν•˜λŠ” 경우둜만 ν•œμ •λ©λ‹ˆλ‹€.

Syntax:  alias path;
Default: β€”
Context: location

μ§€μ •λœ μœ„μΉ˜μ˜ λŒ€μ²΄ μœ„μΉ˜λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ‹€μŒμ˜ κ΅¬μ„±μ—μ„œ

location /i/ {
    alias /data/w3/images/;
}

“/i/top.gif” μš”μ²­μ„ 보낼 μ‹œ /data/w3/images/top.gif 파일이 μ „μ†‘λ©λ‹ˆλ‹€.

path κ°’μ—λŠ” λ³€μˆ˜λ₯Ό 포함할 수 μžˆμœΌλ‚˜, $document_root 및 $realpath_rootλŠ” μ˜ˆμ™Έμž…λ‹ˆλ‹€.

aliasλ₯Ό μ •κ·œμ‹μœΌλ‘œ μ •μ˜ν•œ μœ„μΉ˜μ—μ„œ μ‚¬μš©ν•  경우, μ΄λŸ¬ν•œ μ •κ·œμ‹μ—λŠ” μΊ‘μ²˜κ°€ ν¬ν•¨λ˜κ³  aliasλŠ” 이 캑처λ₯Ό μ°Έμ‘°ν•΄μ•Ό ν•©λ‹ˆλ‹€(0.7.40). 예λ₯Ό λ“€μ–΄, λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

location ~ ^/users/(.+\.(?:gif|jpe?g|png))$ {
    alias /data/w3/images/$1;
}

μœ„μΉ˜κ°€ λͺ…λ Ή κ°’μ˜ λ§ˆμ§€λ§‰ λΆ€λΆ„κ³Ό μΌμΉ˜ν•  경우:

location /images/ {
    alias /data/w3/images/;
}

λŒ€μ‹  root λͺ…령을 μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

location /images/ {
    root /data/w3;
}
Syntax:  auth_delay time;
Default: auth_delay 0s;
Context: http, server, location
This directive appeared in version 1.17.10.

μ•‘μ„ΈμŠ€λ₯Ό λΉ„λ°€λ²ˆν˜Έ, ν•˜μœ„ μš”μ²­μ˜ κ²°κ³Ό λ˜λŠ” JWT둜 μ œν•œν•  λ•Œ 401 응닡 μ½”λ“œλ‘œ κΆŒν•œμ΄ μ—†λŠ” μš”μ²­μ˜ 처리λ₯Ό μ§€μ—°ν•˜μ—¬ 타이밍 곡격을 μ°¨λ‹¨ν•©λ‹ˆλ‹€.

Syntax:  chunked_transfer_encoding on | off;
Default: chunked_transfer_encoding on;
Context: http, server, location

HTTP/1.1μ—μ„œ 청크둜 λ‚˜λ‰œ 전솑 인코딩을 λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€. ν‘œμ€€μ—μ„œ 청크둜 λ‚˜λ‰œ 인코딩을 μ§€μ›ν•˜λ„λ‘ μš”κ΅¬ν•˜μ§€λ§Œ, 이λ₯Ό μ§€μ›ν•˜μ§€ μ•ŠλŠ” μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ‚¬μš©ν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€.

Syntax:  client_body_buffer_size size;
Default: client_body_buffer_size 8k|16k;
Context: http, server, location

ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­ 본문을 μ½λŠ” 버퍼 크기λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. μš”μ²­ 본문이 버퍼보닀 클 경우, 전체 λ³Έλ¬Έ λ˜λŠ” κ·Έ μΌλΆ€λ§Œ μž„μ‹œ νŒŒμΌμ— μž‘μ„±ν•©λ‹ˆλ‹€. 기본적으둜 버퍼 ν¬κΈ°λŠ” λ©”λͺ¨λ¦¬ νŽ˜μ΄μ§€ 2κ°œμ™€ κ°™μŠ΅λ‹ˆλ‹€. x86, λ‹€λ₯Έ 32λΉ„νŠΈ ν”Œλž«νΌ, x86-64μ—μ„œλŠ” 8Kμž…λ‹ˆλ‹€. 일반적으둜 λ‹€λ₯Έ 64λΉ„νŠΈ ν”Œλž«νΌμ—μ„œλŠ” 16Kμž…λ‹ˆλ‹€.

Syntax:  client_body_in_file_only on | clean | off;
Default: client_body_in_file_only off;
Context: http, server, location

nginxκ°€ 전체 ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­ 본문을 νŒŒμΌμ— μ €μž₯ν•΄μ•Ό ν•˜λŠ”μ§€ κ²°μ •ν•©λ‹ˆλ‹€. 이 λͺ…령은 디버깅을 ν•˜κ±°λ‚˜ $request_body_file λ³€μˆ˜ λ˜λŠ” ngx_http_perl_module λͺ¨λ“ˆμ˜ $r->request_body_file λ©”μ„œλ“œ μ‚¬μš© μ‹œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

on κ°’μœΌλ‘œ μ„€μ •ν•˜λ©΄ μš”μ²­μ„ μ²˜λ¦¬ν•œ 후에도 μž„μ‹œ νŒŒμΌμ„ μ œκ±°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

clean 값은 μš”μ²­ 처리λ₯Ό μ œκ±°ν•œ 후에도 μž„μ‹œ νŒŒμΌμ„ λ‚¨κ²¨λ‘‘λ‹ˆλ‹€.

Syntax:  client_body_in_single_buffer on | off;
Default: client_body_in_single_buffer off;
Context: http, server, location

nginxκ°€ ν•˜λ‚˜μ˜ 버퍼에 전체 ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­ 본문을 μ €μž₯ν•΄μ•Ό ν•˜λŠ”μ§€ κ²°μ •ν•©λ‹ˆλ‹€. 이 λͺ…령은 $request_body λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ν•„μš”ν•œ 볡사 μž‘μ—… 수λ₯Ό μ €μž₯ν•  λ•Œ μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

Syntax:  client_body_temp_path path [level1 [level2 [level3]]];
Default: client_body_temp_path client_body_temp;
Context: http, server, location

ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­ 본문이 μžˆλŠ” μž„μ‹œ νŒŒμΌμ„ μ €μž₯ν•  디렉터리λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. μ§€μ •λœ 디렉터리 μ•„λž˜μ— μ΅œλŒ€ 3개 μˆ˜μ€€μ˜ ν•˜μœ„ 디렉터리 계측을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ‹€μŒ κ΅¬μ„±μ—μ„œ

client_body_temp_path /spool/nginx/client_temp 1 2;

μž„μ‹œ 파일의 κ²½λ‘œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

/spool/nginx/client_temp/7/45/00000123457
Syntax:  client_body_timeout time;
Default: client_body_timeout 60s;
Context: http, server, location

ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­ 본문을 μ½λŠ” μ‹œκ°„μ œν•œμ„ μ •μ˜ν•©λ‹ˆλ‹€. μ‹œκ°„μ œν•œμ€ 전체 μš”μ²­ λ³Έλ¬Έ 전솑에 λŒ€ν•΄μ„œκ°€ μ•„λ‹ˆλΌ 두 개의 연속적인 읽기 μž‘μ—… μ‚¬μ΄μ˜ 간격에 λŒ€ν•΄μ„œλ§Œ μ„€μ •ν•©λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈκ°€ 이 μ‹œκ°„ 내에 아무것도 μ „μ†‘ν•˜μ§€ μ•ŠμœΌλ©΄ μš”μ²­μ€ 408(Request Time-out) 였λ₯˜μ™€ ν•¨κ»˜ μ’…λ£Œλ©λ‹ˆλ‹€.

Syntax:  client_header_buffer_size size;
Default: client_header_buffer_size 1k;
Context: http, server

ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­ 헀더λ₯Ό μ½λŠ” 버퍼 크기λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. λŒ€λΆ€λΆ„ μš”μ²­μ˜ 경우, 1K λ°”μ΄νŠΈμ˜ λ²„νΌλ‘œ μΆ©λΆ„ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μš”μ²­μ— κΈ΄ μΏ ν‚€κ°€ ν¬ν•¨λ˜μ—ˆκ±°λ‚˜ μš”μ²­μ΄ WAP ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ „μ†‘λœ 경우, 1K둜 λΆ€μ‘±ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μš”μ²­ ν–‰μ΄λ‚˜ μš”μ²­ 헀더 ν•„λ“œκ°€ 이 버퍼에 λͺ¨λ‘ λ“€μ–΄κ°€μ§€ μ•Šμ„ 경우, large_client_header_buffers λͺ…λ Ήμ—μ„œ κ΅¬μ„±ν•œ 더 큰 버퍼가 ν• λ‹Ήλ©λ‹ˆλ‹€.

이 λͺ…령을 μ„œλ²„ μˆ˜μ€€μ—μ„œ μ§€μ •ν•  경우, κΈ°λ³Έ μ„œλ²„μ˜ 값을 μ‚¬μš©ν•©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ “가상 μ„œλ²„ 선택” μ„Ήμ…˜μ„ μ°Έμ‘°ν•˜μ„Έμš”.

Syntax:  client_header_timeout time;
Default: client_header_timeout 60s;
Context: http, server
Syntax:  client_max_body_size size;
Default: client_max_body_size 1m;
Context: http, server, location

ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­ 본문에 ν—ˆμš©λœ μ΅œλŒ€ 크기λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. μš”μ²­μ˜ 크기가 κ΅¬μ„±λœ 값을 μ΄ˆκ³Όν•˜λŠ” 경우, 413(Request Entity Too Large) 였λ₯˜λ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ— λ°˜ν™˜ν•©λ‹ˆλ‹€. λΈŒλΌμš°μ €λŠ” 이 였λ₯˜λ₯Ό μ˜¬λ°”λ₯΄κ²Œ ν‘œμ‹œν•  수 μ—†μŠ΅λ‹ˆλ‹€. sizeλ₯Ό 0으둜 μ„€μ •ν•˜λ©΄ ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­ λ³Έλ¬Έ 크기 검사가 λΉ„ν™œμ„±ν™”λ©λ‹ˆλ‹€.

Syntax:  connection_pool_size size;
Default: connection_pool_size 256|512;
Context: http, server

μ—°κ²°λ‹Ή λ©”λͺ¨λ¦¬ ν• λ‹Ήμ˜ μ •ν™•νžˆ μ‘°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 λͺ…령은 μ„±λŠ₯에 λ―ΈμΉ˜λŠ” 영ν–₯을 μ΅œμ†Œν™”ν•˜λ©°, 일반적으둜 μ‚¬μš©ν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€. 기본적으둜 이 ν¬κΈ°λŠ” 32λΉ„νŠΈ ν”Œλž«νΌμ—μ„œ 256λ°”μ΄νŠΈμ™€ κ°™κ³  64λΉ„νŠΈ ν”Œλž«νΌμ—μ„œ 512λ°”μ΄νŠΈμ™€ κ°™μŠ΅λ‹ˆλ‹€.

1.9.8버전 μ΄μ „μ—λŠ” λͺ¨λ“  ν”Œλž«νΌμ—μ„œ 기본값이 256μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

Syntax:  default_type mime-type;
Default: default_type text/plain;
Context: http, server, location

μ‘λ‹΅μ˜ κΈ°λ³Έ MIME μœ ν˜•μ„ μ •μ˜ν•©λ‹ˆλ‹€. 파일 이름 ν™•μž₯자λ₯Ό MIME μœ ν˜•μœΌλ‘œ λ§€ν•‘ν•˜λ €λ©΄ types λͺ…λ ΉμœΌλ‘œ μ„€μ •ν•©λ‹ˆλ‹€.

Syntax:  directio size | off;
Default: directio off;
Context: http, server, location
This directive appeared in version 0.7.7.

μ§€μ •λœ size 이상인 νŒŒμΌμ„ 읽을 λ•Œ O_DIRECT ν”Œλž˜κ·Έ(FreeBSD, Linux), F_NOCACHE ν”Œλž˜κ·Έ(macOS) λ˜λŠ” directio() ν•¨μˆ˜(Solaris)λ₯Ό ν™œμ„±ν™”ν•©λ‹ˆλ‹€. 이 λͺ…령은 νŠΉμ • μš”μ²­μ— λŒ€ν•΄ sendfile의 μ‚¬μš©μ„ μžλ™μœΌλ‘œ λΉ„ν™œμ„±ν™”(0.7.15)ν•©λ‹ˆλ‹€. λŒ€μš©λŸ‰ νŒŒμΌμ„ 보낼 λ•Œ μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

directio 4m;

λ˜λŠ” Linuxμ—μ„œ aioλ₯Ό μ‚¬μš©ν•  λ•Œλ„ μœ μš©ν•©λ‹ˆλ‹€.

Syntax:  directio_alignment size;
Default: directio_alignment 512;
Context: http, server, location
This directive appeared in version 0.8.11.

directio에 λŒ€ν•œ 정렬을 μ„€μ •ν•©λ‹ˆλ‹€. λŒ€λΆ€λΆ„μ˜ 경우, 512λ°”μ΄νŠΈ μ •λ ¬λ‘œ μΆ©λΆ„ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ Linuxμ—μ„œ XFSλ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” 4K둜 λ†’μ—¬μ•Ό ν•©λ‹ˆλ‹€.

Syntax:  disable_symlinks off;
         disable_symlinks on | if_not_owner [from=part];
Default: disable_symlinks off;
Context: http, server, location
This directive appeared in version 1.1.15.

νŒŒμΌμ„ μ—΄ λ•Œ 기호 링크λ₯Ό μ²˜λ¦¬ν•˜λŠ” 방법을 κ²°μ •ν•©λ‹ˆλ‹€.

off

경둜 μ΄λ¦„μ—μ„œ 기호 링크λ₯Ό ν—ˆμš©ν•˜κ³  κ²€μ‚¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ΄λŠ” κΈ°λ³Έ λ™μž‘μž…λ‹ˆλ‹€.

on

경둜 μ΄λ¦„μ˜ ꡬ성 μš”μ†Œμ— 기호 링크가 μžˆμ„ 경우, 파일 μ•‘μ„ΈμŠ€κ°€ κ±°λΆ€λ©λ‹ˆλ‹€.

if_not_owner

경둜 μ΄λ¦„μ˜ ꡬ성 μš”μ†Œκ°€ 기호 링크이고, 링크와 링크가 κ°€λ¦¬ν‚€λŠ” 객체의 μ†Œμœ μžκ°€ λ‹€λ₯Ό 경우, 파일 μ•‘μ„ΈμŠ€κ°€ κ±°λΆ€λ©λ‹ˆλ‹€.

from=part

기호 링크(on 및 if_not_owner λ§€κ°œλ³€μˆ˜)λ₯Ό 검사할 λ•Œ, 일반적으둜 λͺ¨λ“  경둜 μ΄λ¦„μ˜ ꡬ성 μš”μ†Œλ₯Ό κ²€μ‚¬ν•©λ‹ˆλ‹€. from=part λ§€κ°œλ³€μˆ˜λ₯Ό μΆ”κ°€λ‘œ μ§€μ •ν•˜λ©΄ 경둜 이름 첫 λΆ€λΆ„μ—μ„œ 기호 링크λ₯Ό κ²€μ‚¬ν•˜μ§€ μ•Šμ•„λ„ λ©λ‹ˆλ‹€. 이 경우, 기호 λ§ν¬λŠ” μ§€μ •λœ 첫 λΆ€λΆ„ 뒀에 μ˜€λŠ” 경둜 이름 ꡬ성 μš”μ†Œμ—μ„œλΆ€ν„° κ²€μ‚¬ν•©λ‹ˆλ‹€. 이 값이 κ²€μ‚¬ν•œ 경둜 μ΄λ¦„μ˜ 첫 뢀뢄이 아닐 경우, 이 λ§€κ°œλ³€μˆ˜λ₯Ό μ§€μ •ν•˜μ§€ μ•Šμ€ κ²ƒμ²˜λŸΌ 경둜 이름 전체λ₯Ό κ²€μ‚¬ν•©λ‹ˆλ‹€. 이 값이 전체 파일 이름과 μΌμΉ˜ν•  경우, 기호 링크λ₯Ό κ²€μ‚¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이 λ§€κ°œλ³€μˆ˜ κ°’μ—λŠ” λ³€μˆ˜λ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€.

예:

disable_symlinks on from=$document_root;

이 λͺ…령은 openat() 및 fstatat() μΈν„°νŽ˜μ΄μŠ€κ°€ μžˆλŠ” μ‹œμŠ€ν…œμ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ‹œμŠ€ν…œμ—λŠ” FreeBSD, Linux 및 Solaris의 μ΅œμ‹  버전이 ν¬ν•¨λ©λ‹ˆλ‹€.

on 및 if_not_owner λ§€κ°œλ³€μˆ˜λŠ” 처리 μ˜€λ²„ν—€λ“œλ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.

검색 λͺ©μ λ§ŒμœΌλ‘œ 디렉터리λ₯Ό μ—΄ 수 μ—†λŠ” μ‹œμŠ€ν…œμ—μ„œ 이 λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ μž‘μ—…μž ν”„λ‘œμ„ΈμŠ€μ— 검사 λŒ€μƒμΈ 디렉터리 전체에 λŒ€ν•œ 읽기 κΆŒν•œμ΄ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

Syntax:  error_page code ... [=[response]] uri;
Default: β€”
Context: http, server, location, if in location

μ§€μ •λœ 였λ₯˜μ— λŒ€ν•΄ ν‘œμ‹œλ˜λŠ” URIλ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. uri κ°’μ—λŠ” λ³€μˆ˜λ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ:

error_page 404             /404.html;
error_page 500 502 503 504 /50x.html;

μ§€μ •λœ uri둜 λ‚΄λΆ€ λ¦¬λ””λ ‰μ…˜μ„ 보내고, ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­ λ©”μ„œλ“œλ₯Ό “GET”으둜 λ³€κ²½ν•©λ‹ˆλ‹€(“GET”κ³Ό “HEAD” μ™Έμ˜ λ‹€λ₯Έ λ©”μ„œλ“œ).

λ˜ν•œ, λ‹€μŒκ³Ό 같이 “=response” ꡬ문을 μ‚¬μš©ν•˜μ—¬ λ‹€λ₯Έ 응닡 μ½”λ“œλ‘œ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

error_page 404 =200 /empty.gif;

였λ₯˜ 응닡을 ν”„λ‘μ‹œλœ μ„œλ²„λ‚˜ FastCGI/uwsgi/SCGI/gRPC μ„œλ²„μ—μ„œ μ²˜λ¦¬ν•˜κ³ , μ„œλ²„κ°€ λ‹€λ₯Έ 응닡 μ½”λ“œ(예: 200, 302, 401, 404)λ₯Ό λ°˜ν™˜ν•  경우, λ°˜ν™˜ν•˜λŠ” μ½”λ“œλ‘œ 응닡할 수 μžˆμŠ΅λ‹ˆλ‹€.

error_page 404 = /404.php;

λ‚΄λΆ€ λ¦¬λ””λ ‰μ…˜μ—μ„œ URI와 λ©”μ„œλ“œλ₯Ό λ³€κ²½ν•  ν•„μš”κ°€ 없을 경우, 였λ₯˜ 처리λ₯Ό 이름이 μ§€μ •λœ μœ„μΉ˜λ‘œ 전달할 수 μžˆμŠ΅λ‹ˆλ‹€.

location / {
    error_page 404 = @fallback;
}

location @fallback {
    proxy_pass http://backend;
}

uri μ²˜λ¦¬μ—μ„œ 였λ₯˜κ°€ λ°œμƒν•˜λ©΄, λ§ˆμ§€λ§‰μœΌλ‘œ λ°œμƒν•œ 였λ₯˜μ˜ μƒνƒœ μ½”λ“œκ°€ ν΄λΌμ΄μ–ΈνŠΈλ‘œ λ°˜ν™˜λ©λ‹ˆλ‹€.

λ˜ν•œ, 였λ₯˜ μ²˜λ¦¬μ— URL λ¦¬λ””λ ‰μ…˜μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

error_page 403      http://example.com/forbidden.html;
error_page 404 =301 http://example.com/notfound.html;

이 κ²½μš°μ—λŠ” 기본적으둜 응닡 μ½”λ“œ 302λ₯Ό ν΄λΌμ΄μ–ΈνŠΈλ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€. λ¦¬λ””λ ‰μ…˜ μƒνƒœ μ½”λ“œ(301, 302, 303, 307, 308) 쀑 ν•˜λ‚˜λ‘œλ§Œ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ½”λ“œ 307은 버전 1.1.16 및 1.0.13κΉŒμ§€ λ¦¬λ””λ ‰μ…˜μœΌλ‘œ μ²˜λ¦¬λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

μ½”λ“œ 308은 버전 1.13.0κΉŒμ§€ λ¦¬λ””λ ‰μ…˜μœΌλ‘œ μ²˜λ¦¬λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

이 λͺ…령은 ν˜„μž¬ μˆ˜μ€€μ—μ„œ μ •μ˜λœ error_page λͺ…령이 없을 κ²½μš°μ—λ§Œ 이전 ꡬ성 μˆ˜μ€€μ—μ„œ μƒμ†ν•©λ‹ˆλ‹€.

Syntax:  etag on | off;
Default: etag on;
Context: http, server, location
This directive appeared in version 1.3.3.

κ³ μ • λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ “ETag” 응닡 헀더 ν•„λ“œμ˜ μžλ™ 생성을 ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

Syntax:  http { ... }
Default: β€”
Context: main

HTTP μ„œλ²„ λͺ…령을 μ§€μ •ν•˜λŠ” ꡬ성 파일 μ»¨ν…μŠ€νŠΈλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

Syntax:  if_modified_since off | exact | before;
Default: if_modified_since exact;
Context: http, server, location
This directive appeared in version 0.7.24.

μ‘λ‹΅μ˜ μˆ˜μ • μ‹œκ°„μ„ “If-Modified-Since” μš”μ²­ 헀더 ν•„λ“œμ˜ μ‹œκ°„κ³Ό λΉ„κ΅ν•˜λŠ” 방법을 μ§€μ •ν•©λ‹ˆλ‹€.

off

“If-Modified-Since”μš”μ²­ 헀더 ν•„λ“œλ₯Ό λ¬΄μ‹œν•  경우(0.7.34)

exact

μ •ν™•ν•œ 일치

before

응닡 μˆ˜μ • μ‹œκ°„μ΄ “If-Modified-Since” μš”μ²­ 헀더 ν•„λ“œμ˜ μ‹œκ°„ μ΄λ‚΄μ΄κ±°λ‚˜ 같을 경우

Syntax:  ignore_invalid_headers on | off;
Default: ignore_invalid_headers on;
Context: http, server

이름이 잘λͺ»λœ 헀더 ν•„λ“œλ₯Ό λ¬΄μ‹œν•΄μ•Ό ν•˜λŠ”μ§€ μ§€μ •ν•©λ‹ˆλ‹€. μœ νš¨ν•œ 이름은 영문자, 숫자, ν•˜μ΄ν”ˆ, 밑쀄(κ°€λŠ₯ν•  경우)둜 κ΅¬μ„±λ©λ‹ˆλ‹€(underscores_in_headers λͺ…λ ΉμœΌλ‘œ μ œμ–΄).

이 λͺ…령을 μ„œλ²„ μˆ˜μ€€μ—μ„œ μ§€μ •ν•  경우, κΈ°λ³Έ μ„œλ²„μ˜ 값을 μ‚¬μš©ν•©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ “가상 μ„œλ²„ 선택” μ„Ήμ…˜μ„ μ°Έμ‘°ν•˜μ„Έμš”.

Syntax:  internal;
Default: β€”
Context: location

λ‚΄λΆ€ μš”μ²­μ—λ§Œ μ‚¬μš©ν•  수 μžˆλŠ” νŠΉμ • μœ„μΉ˜λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€. μ™ΈλΆ€ μš”μ²­μ˜ 경우, ν΄λΌμ΄μ–ΈνŠΈ 였λ₯˜ 404(Not Found)λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. λ‚΄λΆ€ μš”μ²­μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • error_page, index, random_index 및 try_files λͺ…λ ΉμœΌλ‘œ λ¦¬λ””λ ‰μ…˜ν•œ μš”μ²­
  • μ—…μŠ€νŠΈλ¦Ό μ„œλ²„μ—μ„œ “X-Accel-Redirect” 응닡 헀더 ν•„λ“œκ°€ λ¦¬λ””λ ‰μ…˜ν•œ μš”μ²­
  • ngx_http_ssi_module λͺ¨λ“ˆμ˜ “include virtual” λͺ…λ Ή, ngx_http_addition_module λͺ¨λ“ˆ λͺ…λ Ή, auth_request 및 mirror λͺ…λ ΉμœΌλ‘œ κ΅¬μ„±λœ ν•˜μœ„ μš”μ²­
  • rewrite λͺ…령이 λ³€κ²½ν•œ μš”μ²­

예:

error_page 404 /404.html;

location = /404.html {
    internal;
}

잘λͺ»λœ κ΅¬μ„±μ—μ„œ μš”μ²­ 처리 사이클이 λ°œμƒν•˜μ§€ μ•Šλ„λ‘ μš”μ²­λ‹Ή λ‚΄λΆ€ λ¦¬λ””λ ‰μ…˜μ„ 10회둜 μ œν•œν•©λ‹ˆλ‹€. 이 ν•œλ„μ— λ„λ‹¬ν•œ 경우, 였λ₯˜ 500(Internal Server Error)이 λ°˜ν™˜λ©λ‹ˆλ‹€. 이 경우, “rewrite or internal redirection cycle” λ©”μ‹œμ§€λ₯Ό 였λ₯˜ λ‘œκ·Έμ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

Syntax:  keepalive_disable none | browser ...;
Default: keepalive_disable msie6;
Context: http, server, location

잘λͺ»λœ λ™μž‘μ„ ν•˜λŠ” λΈŒλΌμš°μ €λ₯Ό μ‚¬μš©ν•˜λŠ” keep-alive 연결을 λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€. browser λ§€κ°œλ³€μˆ˜λŠ” ν•΄λ‹Ή λΈŒλΌμš°μ €λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€. POST μš”μ²­μ„ μˆ˜μ‹ ν•˜λ©΄ msie6 값이 MSIE 버전이 였래된 keep-alive 연결을 λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€. safari 값은 macOS 및 macOS와 μœ μ‚¬ν•œ 운영 μ²΄μ œμ—μ„œ Safari 및 Safari와 μœ μ‚¬ν•œ λΈŒλΌμš°μ €λ₯Ό μ‚¬μš©ν•˜λŠ” keep-alive 연결을 λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€. none 값은 λͺ¨λ“  λΈŒλΌμš°μ €λ₯Ό μ‚¬μš©ν•˜λŠ” keep-alive 연결을 ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

Syntax:  keepalive_requests number;
Default: keepalive_requests 1000;
Context: http, server, location
This directive appeared in version 0.8.0.

keep-alive 연결을 톡해 μ„œλΉ„μŠ€λ˜λŠ” μ΅œλŒ€ μš”μ²­ 개수λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. μš”μ²­μ„ μ΅œλŒ€ κ°œμˆ˜κΉŒμ§€ μ „μ†‘ν•˜λ©΄ 연결이 μ’…λ£Œλ©λ‹ˆλ‹€.

각 연결에 ν• λ‹Ήλœ λ©”λͺ¨λ¦¬λ₯Ό ν•΄μ œν•˜λ €λ©΄ μ •κΈ°μ μœΌλ‘œ 연결을 λ‹«μ•„μ•Ό ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ―€λ‘œ μ§€λ‚˜μΉ˜κ²Œ μš”μ²­ μˆ˜κ°€ 많으면 κ³Όλ„ν•œ λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•  수 μžˆμœΌλ―€λ‘œ, ꢌμž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

버전 1.19.10 μ΄μ „μ—λŠ” 기본값이 100μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

Syntax:  keepalive_time time;
Default: keepalive_time 1h;
Context: http, server, location
This directive appeared in version 1.19.10.
Syntax:  keepalive_timeout timeout [header_timeout];
Default: keepalive_timeout 75s;
Context: http, server, location

첫 λ§€κ°œλ³€μˆ˜λŠ” keep-alive ν΄λΌμ΄μ–ΈνŠΈ 연결이 μ„œλ²„ μΈ‘μ—μ„œ μ—΄λ € μžˆλŠ” μ‹œκ°„μ œν•œμ„ μ„€μ •ν•©λ‹ˆλ‹€. 0 κ°’μœΌλ‘œ μ„€μ •ν•˜λ©΄ keep-alive ν΄λΌμ΄μ–ΈνŠΈ 연결을 λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€. 선택적 보쑰 λ§€κ°œλ³€μˆ˜λŠ” “Keep-Alive: timeout=time” 응닡 헀더 ν•„λ“œμ—μ„œ 값을 μ„€μ •ν•©λ‹ˆλ‹€. 두 개의 λ§€κ°œλ³€μˆ˜λŠ” λ‹€λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

“Keep-Alive: timeout=time” 헀더 ν•„λ“œλŠ” Mozilla와 Konquerorμ—μ„œ μΈμ •ν•©λ‹ˆλ‹€. MSIEλŠ” μ•½ 60초 λ‚΄λ‘œ 슀슀둜 keep-alive 연결을 μ’…λ£Œν•©λ‹ˆλ‹€.

Syntax:  large_client_header_buffers number size;
Default: large_client_header_buffers 4 8k;
Context: http, server

λŒ€κ·œλͺ¨ ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­ 헀더λ₯Ό μ½λŠ” 데 μ‚¬μš©ν•˜λŠ” λ²„νΌμ˜ μ΅œλŒ€ number 및 sizeλ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. μš”μ²­ 행은 버퍼 ν•˜λ‚˜μ˜ 크기λ₯Ό μ΄ˆκ³Όν•  수 μ—†κ³ , κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ 414(Request-URI Too Large) 였λ₯˜κ°€ ν΄λΌμ΄μ–ΈνŠΈλ‘œ λ°˜ν™˜λ©λ‹ˆλ‹€. μš”μ²­ 헀더 ν•„λ“œλŠ” 버퍼 ν•˜λ‚˜μ˜ 크기λ₯Ό μ΄ˆκ³Όν•  수 μ—†μœΌλ©°, κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ ν΄λΌμ΄μ–ΈνŠΈμ— 400(Bad Request) 였λ₯˜κ°€ λ°˜ν™˜λ©λ‹ˆλ‹€. λ²„νΌλŠ” ν•„μš”μ— λ”°λΌμ„œλ§Œ ν• λ‹Ήλ©λ‹ˆλ‹€. 기본적으둜 버퍼 ν¬κΈ°λŠ” 8K λ°”μ΄νŠΈμž…λ‹ˆλ‹€. μš”μ²­ μ²˜λ¦¬κ°€ λλ‚˜λ©΄ 연결이 keep-alive μƒνƒœλ‘œ λ³€κ²½λ˜κ³  이 λ²„νΌλŠ” ν•΄μ œλ©λ‹ˆλ‹€.

이 λͺ…령을 μ„œλ²„ μˆ˜μ€€μ—μ„œ μ§€μ •ν•  경우, κΈ°λ³Έ μ„œλ²„μ˜ 값을 μ‚¬μš©ν•©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ “가상 μ„œλ²„ 선택” μ„Ήμ…˜μ„ μ°Έμ‘°ν•˜μ„Έμš”.

Syntax:  limit_except method ... { ... }
Default: β€”
Context: location

μœ„μΉ˜ λ‚΄μ—μ„œ ν—ˆμš©λœ HTTP λ©”μ„œμ¦ˆλ₯Ό μ œν•œν•©λ‹ˆλ‹€. method λ§€κ°œλ³€μˆ˜λŠ” λ‹€μŒ 쀑 ν•˜λ‚˜κ°€ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. GET, HEAD, POST, PUT, DELETE, MKCOL, COPY, MOVE, OPTIONS, PROPFIND, PROPPATCH, LOCK, UNLOCK, PATCH. GET λ©”μ„œλ“œλ₯Ό ν—ˆμš©ν•˜λ©΄ HEAD λ©”μ„œλ“œλ„ ν—ˆμš©λ©λ‹ˆλ‹€. ngx_http_access_module, ngx_http_auth_basic_module 및 ngx_http_auth_jwt_module(1.13.10) λͺ¨λ“ˆ λͺ…령을 μ‚¬μš©ν•  λ•Œλ§Œ λ‹€λ₯Έ λ©”μ„œλ“œμ— μ•‘μ„ΈμŠ€ν•˜λ„λ‘ μ œν•œλ  수 μžˆμŠ΅λ‹ˆλ‹€.

limit_except GET {
    allow 192.168.1.0/32;
    deny  all;
}
Syntax:  limit_rate rate;
Default: limit_rate 0;
Context: http, server, location, if in location

ν΄λΌμ΄μ–ΈνŠΈλ‘œμ˜ 응닡 전솑 속도λ₯Ό μ œν•œν•©λ‹ˆλ‹€. μ†λ„λŠ” μ΄ˆλ‹Ή λ°”μ΄νŠΈλ‘œ μ§€μ •λ©λ‹ˆλ‹€. 0 값은 속도 μ œν•œμ„ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€. μš”μ²­λ³„λ‘œ μ œν•œμ„ μ„€μ •ν–ˆλŠ”λ° ν΄λΌμ΄μ–ΈνŠΈκ°€ λ™μ‹œμ— 두 개의 연결을 μ—΄μ—ˆμ„ 경우, 전체 μ†λ„λŠ” μ§€μ •λœ μ œν•œλ³΄λ‹€ 두 λ°°κ°€ λ©λ‹ˆλ‹€.

λ§€κ°œλ³€μˆ˜ 값은 λ³€μˆ˜λ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€(1.17.0). νŠΉμ • 쑰건에 따라 속도λ₯Ό μ œν•œν•˜λŠ” κ²½μš°μ— μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

map $slow $rate {
    1     4k;
    2     8k;
}

limit_rate $rate;

속도 μ œν•œμ€ $limit_rate λ³€μˆ˜μ—μ„œλ„ μ„€μ •ν•  수 μžˆμ§€λ§Œ 1.17.0버전 μ΄ν›„λ‘œ 이 λ©”μ„œλ“œλŠ” ꢌμž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

server {

    if ($slow) {
        set $limit_rate 4k;
    }

    ...
}

속도 μ œν•œμ€ ν”„λ‘μ‹œλœ μ„œλ²„ μ‘λ‹΅μ˜ “X-Accel-Limit-Rate” 헀더 ν•„λ“œμ—μ„œλ„ μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 κΈ°λŠ₯은 proxy_ignore_headers, fastcgi_ignore_headers, uwsgi_ignore_headers 및 scgi_ignore_headers λͺ…령을 μ‚¬μš©ν•˜μ—¬ λΉ„ν™œμ„±ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Syntax:  limit_rate_after size;
Default: limit_rate_after 0;
Context: http, server, location, if in location
This directive appeared in version 0.8.0.

졜초 μš©λŸ‰μ„ μ„€μ •ν•˜κ³ , κ·Έ 이후에 ν΄λΌμ΄μ–ΈνŠΈμ— λŒ€ν•œ 응닡 전솑 μ‹œ 속도가 μ œν•œλ©λ‹ˆλ‹€. λ§€κ°œλ³€μˆ˜ 값은 λ³€μˆ˜λ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€(1.17.0).

예:

location /flv/ {
    flv;
    limit_rate_after 500k;
    limit_rate       50k;
}
Syntax:  lingering_close off | on | always;
Default: lingering_close on;
Context: http, server, location
This directive appeared in versions 1.1.0 and 1.0.6.

nginxκ°€ ν΄λΌμ΄μ–ΈνŠΈ 연결을 μ’…λ£Œν•˜λŠ” 방식을 μ œμ–΄ν•©λ‹ˆλ‹€.

κΈ°λ³Έκ°’ “on”으둜 μ„€μ •ν•˜λ©΄ nginxκ°€ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ 좔가적인 데이터λ₯Ό μˆ˜μ‹ ν•˜κΈ°λ₯Ό κΈ°λ‹€λ Έλ‹€κ°€ μ²˜λ¦¬ν•œ λ‹€μŒ, μ™„μ „νžˆ 연결을 μ’…λ£Œν•˜μ§€λ§Œ, κ²½ν—˜μ μœΌλ‘œ ν΄λΌμ΄μ–ΈνŠΈκ°€ 좔가적인 데이터λ₯Ό 전솑할 κ²ƒμœΌλ‘œ μ˜ˆμƒν•  수 μžˆμ„ κ²½μš°μ—λ§Œ ν•΄λ‹Ήν•©λ‹ˆλ‹€.

“always” κ°’μœΌλ‘œ μ„€μ •ν•˜λ©΄ nginxκ°€ 좔가적 ν΄λΌμ΄μ–ΈνŠΈ 데이터λ₯Ό 무쑰건 κΈ°λ‹€λ Έλ‹€κ°€ μ²˜λ¦¬ν•©λ‹ˆλ‹€.

“off” κ°’μœΌλ‘œ μ„€μ •ν•˜λ©΄ nginxκ°€ 좔가적 데이터λ₯Ό 기닀리지 μ•Šκ³  μ¦‰μ‹œ 연결을 μ’…λ£Œν•©λ‹ˆλ‹€. 이 λ™μž‘μ€ ν”„λ‘œν† μ½œμ„ κΉ¨νŠΈλ¦¬λ―€λ‘œ 일반적인 μƒν™©μ—μ„œλŠ” μ‚¬μš©ν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€.

HTTP/2 μ—°κ²° μ’…λ£Œλ₯Ό μ œμ–΄ν•˜λ €λ©΄ μ„œλ²„ μˆ˜μ€€μ—μ„œ 이 λͺ…령을 μ§€μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€(1.19.1).

Syntax:  lingering_time time;
Default: lingering_time 30s;
Context: http, server, location

lingering_closeκ°€ ν™œμ„±ν™”λœ 경우, 이 λͺ…령은 nginxκ°€ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μˆ˜μ‹ λ˜λŠ” μΆ”κ°€ 데이터λ₯Ό 처리(읽기 및 λ¬΄μ‹œ)ν•˜λŠ” μ΅œλŒ€ μ‹œκ°„μ„ μ§€μ •ν•©λ‹ˆλ‹€. κ·Έ μ΄ν›„μ—λŠ” 좔가적 데이터가 μžˆμ–΄λ„ 연결이 μ’…λ£Œλ©λ‹ˆλ‹€.

Syntax:  lingering_timeout time;
Default: lingering_timeout 5s;
Context: http, server, location

lingering_closeκ°€ ν™œμ„±ν™”λœ 경우, 이 λͺ…령은 좔가적 데이터가 λ„μ°©ν•˜κΈ°λ₯Ό λŒ€κΈ°ν•˜λŠ” μ΅œλŒ€ μ‹œκ°„μ„ μ§€μ •ν•©λ‹ˆλ‹€. 이 μ‹œκ°„ λ™μ•ˆ 데이터λ₯Ό μˆ˜μ‹ ν•˜μ§€ μ•ŠμœΌλ©΄ 연결이 μ’…λ£Œλ©λ‹ˆλ‹€. κ·Έλ ‡μ§€ μ•Šμ„ 경우 데이터λ₯Ό 읽고 λ¬΄μ‹œν•˜λ©°, nginxλŠ” λ‹€μ‹œ 좔가적 데이터λ₯Ό 기닀리기 μ‹œμž‘ν•©λ‹ˆλ‹€. “λŒ€κΈ°-읽기-λ¬΄μ‹œ” 사이클은 lingering_time λͺ…λ Ήμ—μ„œ μ§€μ •ν•œ 만큼 λ°˜λ³΅λ©λ‹ˆλ‹€.

Syntax:  listen address[:port] [default_server] [ssl] [http2 | spdy] [proxy_protocol] [setfib=number] 
         [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] 
         [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
         listen port [default_server] [ssl] [http2 | spdy] [proxy_protocol] [setfib=number] [fastopen=number]  
         [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] 
         [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
         listen unix:path [default_server] [ssl] [http2 | spdy] [proxy_protocol] [backlog=number] [rcvbuf=size]  
         [sndbuf=size] [accept_filter=filter] [deferred] [bind] [so_keepalive=on|off|[keepidle]:[keepintvl]:
         [keepcnt]];
Default: listen *:80 | *:8000;
Context: server

IP에 λŒ€ν•΄ address 및 portλ₯Ό μ„€μ •ν•˜κ±°λ‚˜ μ„œλ²„κ°€ μš”μ²­μ„ μˆ˜λ½ν•  UNIX-도메인 μ†ŒμΌ“μ— λŒ€ν•œ pathλ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. address와 port, λ˜λŠ” addressλ‚˜ port ν•˜λ‚˜λ§Œ μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. addressλŠ” λ‹€μŒκ³Ό 같이 호슀트 μ΄λ¦„μœΌλ‘œ μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

listen 127.0.0.1:8000;
listen 127.0.0.1;
listen 8000;
listen *:8000;
listen localhost:8000;

IPv6 μ£Όμ†Œ(0.7.36)λŠ” κΊΎμ‡  κ΄„ν˜Έμ— μ§€μ •λ©λ‹ˆλ‹€.

listen [::]:8000;
listen [::1];

UNIX 도메인 μ†ŒμΌ“(0.8.21)은 “unix:” 접두사λ₯Ό ν¬ν•¨ν•˜μ—¬ μ§€μ •λ©λ‹ˆλ‹€.

listen unix:/var/run/nginx.sock;

포트 80을 μ‚¬μš©ν•˜λŠ” 경우 address만 μ§€μ •ν•©λ‹ˆλ‹€.

이 λͺ…령이 μ—†μœΌλ©΄ nginxκ°€ superuser κΆŒν•œμœΌλ‘œ 싀행될 λ•Œ *:80을 μ‚¬μš©ν•˜κ³  κ·Έ 이에 κ²½μš°μ—λŠ” *:8000을 μ‚¬μš©ν•©λ‹ˆλ‹€.

default_server λ§€κ°œλ³€μˆ˜κ°€ 있으면 μ„œλ²„κ°€ μ§€μ •λœ address:port 쌍의 κΈ°λ³Έ μ„œλ²„κ°€ λ©λ‹ˆλ‹€. default_server λ§€κ°œλ³€μˆ˜κ°€ μžˆλŠ” λͺ…령이 μ—†μœΌλ©΄ address:port 쌍이 μžˆλŠ” 첫 μ„œλ²„κ°€ 이 μŒμ— λŒ€ν•œ κΈ°λ³Έ μ„œλ²„κ°€ λ©λ‹ˆλ‹€.

0.8.21버전 μ΄μ „μ—λŠ” 이 λ§€κ°œλ³€μˆ˜ 이름이 default만 μ§€μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

ssl λ§€κ°œλ³€μˆ˜(0.7.14)λ₯Ό μ‚¬μš©ν•΄μ„œ 이 ν¬νŠΈμ—μ„œ μˆ˜λ½ν•˜λŠ” λͺ¨λ“  연결이 SSL λͺ¨λ“œλ‘œ μž‘λ™ν•˜λ„λ‘ μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 그러면 HTTP와 HTTPS μš”μ²­μ„ λͺ¨λ‘ μ²˜λ¦¬ν•˜λŠ” μ„œλ²„μ— λŒ€ν•΄ λ”μš± κ°„λ‹¨ν•œ ꡬ성이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

http2 λ§€κ°œλ³€μˆ˜(1.9.5)λŠ” ν¬νŠΈκ°€ HTTP/2 연결을 μˆ˜λ½ν•˜λ„λ‘ κ΅¬μ„±ν•©λ‹ˆλ‹€. 일반적으둜 이 ꡬ성이 μž‘λ™ν•˜λ €λ©΄ ssl λ§€κ°œλ³€μˆ˜λ„ μ§€μ •ν•΄μ•Ό ν•˜μ§€λ§Œ nginxλŠ” SSL 없이 HTTP/2 연결을 μˆ˜λ½ν•˜λ„λ‘ ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€.

spdy λ§€κ°œλ³€μˆ˜(1.3.15-1.9.4)λ₯Ό μ‚¬μš©ν•˜λ©΄ 이 ν¬νŠΈμ—μ„œ SPDY 연결을 μˆ˜λ½ν•˜λ„λ‘ ν—ˆμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 일반적으둜 이 ꡬ성이 μž‘λ™ν•˜λ €λ©΄ ssl λ§€κ°œλ³€μˆ˜λ„ μ§€μ •ν•΄μ•Ό ν•˜μ§€λ§Œ nginxλŠ” SSL 없이 SPDY 연결을 μˆ˜λ½ν•˜λ„λ‘ ꡬ성할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

proxy_protocol λ§€κ°œλ³€μˆ˜(1.5.12)λ₯Ό μ‚¬μš©ν•˜λ©΄ 이 ν¬νŠΈμ—μ„œ μˆ˜μ‹ ν•˜λŠ” λͺ¨λ“  연결이 PROXY ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜λ„λ‘ μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

PROXY ν”„λ‘œν† μ½œ 버전 2λŠ” 1.13.11버전 μ΄ν›„λ‘œ μ§€μ›λ©λ‹ˆλ‹€.

listen λͺ…령은 μ†ŒμΌ“ κ΄€λ ¨ μ‹œμŠ€ν…œ ν˜ΈμΆœμ— μ—¬λŸ¬ μΆ”κ°€ λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 λ§€κ°œλ³€μˆ˜λŠ” λͺ¨λ“  listen λͺ…λ Ήμ—μ„œ μ§€μ •ν•  수 μžˆμ§€λ§Œ νŠΉμ • address:port μŒμ— λŒ€ν•΄μ„œλŠ” ν•œ 번만 μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

0.8.21버전 μ΄μ „μ—λŠ” default λ§€κ°œλ³€μˆ˜μ™€ ν•¨κ»˜ listen λͺ…λ Ήμ—μ„œλ§Œ μ§€μ •ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

setfib=number

이 λ§€κ°œλ³€μˆ˜(0.8.44)λŠ” κ΄€λ ¨ λΌμš°νŒ… ν…Œμ΄λΈ”μ„ μ„€μ •ν•˜κ³ , λ¦¬μŠ€λ‹ μ†ŒμΌ“μ— λŒ€ν•΄μ„œλŠ” FIB(SO_SETFIB μ˜΅μ…˜)λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. ν˜„μž¬λŠ” FreeBSDμ—μ„œλ§Œ μ§€μ›λ©λ‹ˆλ‹€.

fastopen=number

λ¦¬μŠ€λ‹ μ†ŒμΌ“μ— λŒ€ν•΄ “TCP Fast Open“을 ν™œμ„±ν™”ν•˜κ³ (1.5.8) 3웨이 ν•Έλ“œμ…°μ΄ν¬λ₯Ό 아직 μ™„λ£Œν•˜μ§€ μ•Šμ€ μ—°κ²° λŒ€κΈ°μ—΄μ˜ μ΅œλŒ€ 길이λ₯Ό μ œν•œν•©λ‹ˆλ‹€.

μ„œλ²„κ°€ 데이터가 ν¬ν•¨λœ λ™μΌν•œ SYN νŒ¨ν‚· μˆ˜μ‹ μ„ 2회 이상 μ²˜λ¦¬ν•  수 μžˆμ„ κ²½μš°μ—λ§Œ 이 κΈ°λŠ₯을 ν™œμ„±ν™”ν•˜μ„Έμš”.

backlog=number

listen() ν˜ΈμΆœμ—μ„œ backlog λ§€κ°œλ³€μˆ˜λ₯Ό μ„€μ •ν•˜μ—¬, λŒ€κΈ° 쀑인 μ—°κ²° λŒ€κΈ°μ—΄μ˜ μ΅œλŒ€ 길이λ₯Ό μ œν•œν•©λ‹ˆλ‹€. 기본적으둜 backlogλŠ” FreeBSD, DragonFly BSD, macOSμ—μ„œ -1둜 μ„€μ •λ˜κ³ , λ‹€λ₯Έ ν”Œλž«νΌμ—μ„œλŠ” 511둜 μ„€μ •λ©λ‹ˆλ‹€.

rcvbuf=size

λ¦¬μŠ€λ‹ μ†ŒμΌ“μ— λŒ€ν•œ μˆ˜μ‹  버퍼 크기(SO_RCVBUF μ˜΅μ…˜)λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€.

sndbuf=size

λ¦¬μŠ€λ‹ μ†ŒμΌ“μ— λŒ€ν•œ 전솑 버퍼 크기(SO_SNDBUF μ˜΅μ…˜)λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€.

accept_filter=filter

λ¦¬μŠ€λ‹ μ†ŒμΌ“μ— λŒ€ν•΄ 수락 ν•„ν„° 이름(SO_ACCEPTFILTER μ˜΅μ…˜)을 μ„€μ •ν•˜μ—¬, μˆ˜μ‹ λ˜λŠ” 연결을 ν•„ν„°λ§ν•œ λ‹€μŒ accept()둜 μ „λ‹¬ν•©λ‹ˆλ‹€. μ΄λŠ” FreeBSD 및 NetBSD 5.0+μ—μ„œλ§Œ μ§€μ›ν•©λ‹ˆλ‹€. μ‚¬μš© κ°€λŠ₯ν•œ 값은 dataready 및 httpreadyμž…λ‹ˆλ‹€.

deferred

Linuxμ—μ„œ μ§€μ—°λœ accept()(TCP_DEFER_ACCEPT μ†ŒμΌ“ μ˜΅μ…˜)λ₯Ό μ‚¬μš©ν•˜λŠ” λͺ…λ Ήμž…λ‹ˆλ‹€.

bind

νŠΉμ • address:port μŒμ— λ³„λ„μ˜  bind() ν˜ΈμΆœμ„ λ³΄λ‚΄λŠ” λͺ…λ Ήμž…λ‹ˆλ‹€. ν¬νŠΈκ°€ λ™μΌν•˜μ§€λ§Œ μ£Όμ†Œκ°€ λ‹€λ₯Έ listen λͺ…령이 μ—¬λŸ¬ 개일 경우, listen λͺ…λ Ή 쀑 ν•˜λ‚˜κ°€ νŠΉμ • 포트(*:port)에 λŒ€ν•œ λͺ¨λ“  μ£Όμ†Œλ₯Ό μˆ˜μ‹ ν•˜κ³ , nginxλŠ” *:portμ—λ§Œ  bind()λ˜λ―€λ‘œ μœ μš©ν•©λ‹ˆλ‹€. 이 경우, getsockname() μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ λ³΄λ‚΄μ„œ 연결을 μˆ˜μ‹ ν•œ μ£Όμ†Œλ₯Ό 확인해야 ν•©λ‹ˆλ‹€. setfib, fastopen, backlog, rcvbuf, sndbuf, accept_filter, deferred, ipv6only, reuseport λ˜λŠ” so_keepalive λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•  경우, μ–Έμ œλ‚˜ ν•΄λ‹Ή address:port μŒμ— λŒ€ν•΄ λ³„λ„μ˜ bind() ν˜ΈμΆœμ„ λ³΄λƒ…λ‹ˆλ‹€.

ipv6only=on|off

이 λ§€κ°œλ³€μˆ˜(0.7.42)λŠ” (IPV6_V6ONLY μ†ŒμΌ“ μ˜΅μ…˜μ„ 톡해) μ™€μΌλ“œμΉ΄λ“œ μ£Όμ†Œ [::]λ₯Ό μˆ˜μ‹ ν•˜λŠ” IPv6 μ†ŒμΌ“μ΄ IPv6와 IPv4 μ—°κ²°μ—μ„œ IPv6 μ—°κ²°λ§Œ μˆ˜λ½ν•˜λŠ”μ§€λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€. 이 λ§€κ°œλ³€μˆ˜λŠ” 기본적으둜 ν™œμ„±ν™”λ©λ‹ˆλ‹€. μ‹œμž‘ μ‹œ ν•œ 번만 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

1.3.4버전 μ΄μ „μ—λŠ” 이 λ§€κ°œλ³€μˆ˜λ₯Ό μƒλž΅ν•  경우, 운영 체제 섀정이 μ†ŒμΌ“μ— μ μš©λ©λ‹ˆλ‹€.

reuseport

이 λ§€κ°œλ³€μˆ˜(1.9.1)λ₯Ό μ‚¬μš©ν•˜λ©΄ 각 μž‘μ—…μž ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•΄ (Linux 3.9+ 및 DragonFly BSDμ—μ„œλŠ” SO_REUSEPORT μ†ŒμΌ“ μ˜΅μ…˜, FreeBSD 12+μ—μ„œλŠ” SO_REUSEPORT_LB μ†ŒμΌ“ μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μ—¬) κ°œλ³„ λ¦¬μŠ€λ‹ μ†ŒμΌ“μ„ μƒμ„±ν•˜κ³  컀널이 μž‘μ—…μž ν”„λ‘œμ„ΈμŠ€ 사이에 μˆ˜μ‹ λ˜λŠ” 연결을 λ°°ν¬ν•˜λ„λ‘ ν•©λ‹ˆλ‹€. ν˜„μž¬λŠ” Linux 3.9+, DragonFly BSD 및 FreeBSD 12+μ—μ„œλ§Œ μž‘λ™ν•©λ‹ˆλ‹€(1.15.1).

이 μ˜΅μ…˜μ„ 잘λͺ» μ‚¬μš©ν•˜λ©΄ λ³΄μ•ˆμ— 영ν–₯을 λ―ΈμΉ  수 μžˆμŠ΅λ‹ˆλ‹€.

so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]

이 λ§€κ°œλ³€μˆ˜(1.1.11)λŠ” λ¦¬μŠ€λ‹ μ†ŒμΌ“μ— “TCP keepalive” λ™μž‘μ„ κ΅¬μ„±ν•©λ‹ˆλ‹€. 이 λ§€κ°œλ³€μˆ˜λ₯Ό μƒλž΅ν•  경우, 운영 체제 섀정이 μ†ŒμΌ“μ— μ μš©λ©λ‹ˆλ‹€. “on” κ°’μœΌλ‘œ μ„€μ •ν•  경우, SO_KEEPALIVE μ˜΅μ…˜μ΄ μ†ŒμΌ“μ— ν™œμ„±ν™”λ©λ‹ˆλ‹€. “off” κ°’μœΌλ‘œ μ„€μ •ν•  경우, SO_KEEPALIVE μ˜΅μ…˜μ΄ μ†ŒμΌ“μ΄ λΉ„ν™œμ„±ν™”λ©λ‹ˆλ‹€. 일뢀 운영 μ²΄μ œλŠ” TCP_KEEPIDLE, TCP_KEEPINTVL 및 TCP_KEEPCNT μ†ŒμΌ“ μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μ—¬ μ†ŒμΌ“λ³„λ‘œ TCP keepalive λ§€κ°œλ³€μˆ˜λ₯Ό μ„€μ •ν•˜λ„λ‘ μ§€μ›ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ‹œμŠ€ν…œ(ν˜„μž¬ Linux 2.4+, NetBSD 5+ 및 FreeBSD 9.0-STABLE)의 경우, keepidle, keepintvl 및 keepcnt λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜λ‚˜ λ˜λŠ” 두 개의 λ§€κ°œλ³€μˆ˜λ₯Ό μƒλž΅ν•  수 μžˆλŠ”λ°, 이 κ²½μš°μ—λŠ” ν•΄λ‹Ή μ†ŒμΌ“ μ˜΅μ…˜μ— λŒ€ν•œ μ‹œμŠ€ν…œ κΈ°λ³Έ 섀정이 μ μš©λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄,

so_keepalive=30m::10

유휴 μ‹œκ°„ 초과(TCP_KEEPIDLE)λ₯Ό 30λΆ„μœΌλ‘œ μ„€μ •ν•˜κ³ , ν”„λ‘œλΈŒ 간격(TCP_KEEPINTVL)은 μ‹œμŠ€ν…œ κΈ°λ³Έκ°’μœΌλ‘œ 두고, ν”„λ‘œλΈŒ 수(TCP_KEEPCNT)λŠ” 10개둜 μ„€μ •ν•©λ‹ˆλ‹€.

listen 127.0.0.1 default_server accept_filter=dataready backlog=1024;
Syntax:	 location [ = | ~ | ~* | ^~ ] uri { ... }
         location @name { ... }
Default: β€”
Context: server, location

μš”μ²­ URI에 따라 ꡬ성을 μ„€μ •ν•©λ‹ˆλ‹€.

μ •κ·œν™”λœ URI에 λŒ€ν•΄ 맀칭을 μ‹€ν–‰ν•˜κ³ , “%XX” ν˜•μ‹μœΌλ‘œ μΈμ½”λ”©λœ ν…μŠ€νŠΈλ₯Ό λ³΅ν˜Έν™”ν•œ ν›„, “.” 및 “..” μƒλŒ€μ  경둜 ꡬ성 μš”μ†Œμ— λŒ€ν•œ μ°Έμ‘°λ₯Ό λΆ„μ„ν•˜κ³  두 개 μ΄μƒμ˜ μΈμ ‘ν•œ μŠ¬λž˜μ‹œλ₯Ό ν•˜λ‚˜λ‘œ μ••μΆ•ν•©λ‹ˆλ‹€.

μœ„μΉ˜λŠ” 접두사 λ¬Έμžμ—΄ λ˜λŠ” μ •κ·œμ‹μœΌλ‘œ μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ •κ·œμ‹μ€ μ•žμ— “~*” μˆ˜μ •μž(λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•ŠλŠ” λ§€μΉ­), λ˜λŠ” “~” μˆ˜μ •μž(λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜λŠ” λ§€μΉ­)λ₯Ό λΆ™μ—¬μ„œ μ§€μ •ν•©λ‹ˆλ‹€. νŠΉμ • μš”μ²­κ³Ό μΌμΉ˜ν•˜λŠ” μœ„μΉ˜λ₯Ό 찾으렀면 nginxλŠ” λ¨Όμ € 접두사 λ¬Έμžμ—΄(접두사 μœ„μΉ˜)을 μ‚¬μš©ν•˜μ—¬ μ •μ˜λœ μœ„μΉ˜λ₯Ό 검사해야 ν•©λ‹ˆλ‹€. κ·Έμ€‘μ—μ„œλ„ 접두사 μΌμΉ˜κ°€ κ°€μž₯ κΈ΄ μœ„μΉ˜λ₯Ό μ„ νƒν•˜μ—¬ κΈ°μ–΅ν•©λ‹ˆλ‹€. μ •κ·œμ‹μ„ ꡬ성 νŒŒμΌμ— ν‘œμ‹œλœ μˆœμ„œλ‘œ κ²€μ‚¬ν•©λ‹ˆλ‹€. μ •κ·œμ‹ κ²€μ‚¬λŠ” 첫 μΌμΉ˜μ—μ„œ μ€‘λ‹¨ν•˜κ³ , ν•΄λ‹Ή ꡬ성을 μ‚¬μš©ν•©λ‹ˆλ‹€. μ •κ·œμ‹κ³Όμ˜ 일치λ₯Ό λ°œκ²¬ν•˜μ§€ λͺ»ν•  경우, 이전에 κΈ°μ–΅ν•œ 접두사 μœ„μΉ˜ ꡬ성을 μ‚¬μš©ν•©λ‹ˆλ‹€.

location 블둝은 쀑첩할 수 있고, 일뢀 μ˜ˆμ™ΈλŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

macOS, Cygwin λ“±μ˜ λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜λŠ” 운영 체제의 경우, 접두사 λ¬Έμžμ—΄κ³Όμ˜ μΌμΉ˜λŠ” λŒ€μ†Œλ¬Έμž ꡬ뢄을 λ¬΄μ‹œν•©λ‹ˆλ‹€(0.7.7). κ·ΈλŸ¬λ‚˜ λΉ„κ΅λŠ” 1λ°”μ΄νŠΈ 둜캘둜 μ œν•œλ©λ‹ˆλ‹€.

μ •κ·œμ‹μ—λŠ” λ‚˜μ€‘μ— λ‹€λ₯Έ λͺ…λ Ήμ—μ„œ μ‚¬μš©ν•  캑처(0.7.40)λ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€.

접두사 μΌμΉ˜κ°€ κ°€μž₯ κΈ΄ μœ„μΉ˜μ—λŠ” “^~” μˆ˜μ •μžκ°€ 있고, μ •κ·œμ‹μ„ κ²€μ‚¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

“=” μˆ˜μ •μžλ₯Ό μ‚¬μš©ν•˜λ©΄ URI와 μœ„μΉ˜μ˜ μ •ν™•ν•œ 일치λ₯Ό μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ •ν™•ν•œ 일치λ₯Ό λ°œκ²¬ν•  경우, 검색을 μ’…λ£Œν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ “/” μš”μ²­μ΄ μˆ˜μ‹œλ‘œ λ°œμƒν•  경우, “location = /”을 μ •μ˜ν•˜λ©΄ μ΄λŸ¬ν•œ μš”μ²­μ˜ 처리 속도가 λΉ¨λΌμ§‘λ‹ˆλ‹€. 첫 비ꡐ ν›„ 검색이 λ°”λ‘œ μ’…λ£Œλ˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. 이런 μœ„μΉ˜μ—λŠ” μ€‘μ²©λœ μœ„μΉ˜λ₯Ό 포함할 수 μ—†μŠ΅λ‹ˆλ‹€.

0.7.1~0.8.41λ²„μ „μ—μ„œ μš”μ²­μ΄ “=” 및 “^~” μˆ˜μ •μž 없이 μš”μ²­μ„ μΌμΉ˜μ‹œν‚¬ κ²½μš°μ—λ„ 검색이 μ’…λ£Œλ˜κ³  μ •κ·œμ‹μ„ κ²€μ‚¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

그러면 μ˜ˆμ‹œλ₯Ό 톡해 μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

location = / {
    [ configuration A ]
}

location / {
    [ configuration B ]
}

location /documents/ {
    [ configuration C ]
}

location ^~ /images/ {
    [ configuration D ]
}

location ~* \.(gif|jpg|jpeg)$ {
    [ configuration E ]
}

“/” μš”μ²­μ€ ꡬ성 A와 μΌμΉ˜ν•˜κ³ , “/index.html” μš”μ²­μ€ ꡬ성 B와 μΌμΉ˜ν•˜λ©°, “/documents/document.html” μš”μ²­μ€ ꡬ성 C와 μΌμΉ˜ν•©λ‹ˆλ‹€. “/images/1.gif” μš”μ²­μ€ ꡬ성 D와 μΌμΉ˜ν•˜κ³ , “/documents/1.jpg” μš”μ²­μ€ ꡬ성 E와 μΌμΉ˜ν•©λ‹ˆλ‹€.

“@” μ ‘λ‘μ‚¬λŠ” 이름이 μ§€μ •λœ μœ„μΉ˜λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μœ„μΉ˜λŠ” 정식 μš”μ²­μ—λŠ” μ‚¬μš©ν•˜μ§€ μ•Šμ§€λ§Œ, λŒ€μ‹  μš”μ²­ λ¦¬λ””λ ‰μ…˜μ—λŠ” μ‚¬μš©ν•©λ‹ˆλ‹€. 이듀은 쀑첩할 수 μ—†κ³ , μ€‘μ²©λœ μœ„μΉ˜λ₯Ό 포함할 수 μ—†μŠ΅λ‹ˆλ‹€.

μŠ¬λž˜μ‹œ 문자둜 λλ‚˜λŠ” 접두사 λ¬Έμžμ—΄λ‘œ μœ„μΉ˜λ₯Ό μ •μ˜ν•˜κ³  μš”μ²­μ„ proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, memcached_pass λ˜λŠ” grpc_pass 쀑 ν•˜λ‚˜λ‘œ μ²˜λ¦¬ν•  경우, νŠΉμˆ˜ν•œ 처리λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. 이 λ¬Έμžμ—΄κ³Ό 같은 URIκ°€ μžˆμ§€λ§Œ 끝에 μŠ¬λž˜μ‹œκ°€ λΆ™μ§€ μ•Šμ€ μš”μ²­μ—μ„œ μ½”λ“œ 301을 ν¬ν•¨ν•œ 영ꡬ적 λ¦¬λ””λ ‰μ…˜μ„ μŠ¬λž˜μ‹œλ₯Ό μ²¨λΆ€ν•œ μš”μ²­λœ URI에 λ°˜ν™˜λ©λ‹ˆλ‹€. 이 λ™μž‘μ„ μ›ν•˜μ§€ μ•Šμ„ 경우, URI와 μœ„μΉ˜μ˜ μ •ν™•ν•œ 일치λ₯Ό λ‹€μŒκ³Ό 같이 μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

location /user/ {
    proxy_pass http://user.example.com;
}

location = /user {
    proxy_pass http://login.example.com;
}
Syntax:  log_not_found on | off;
Default: log_not_found on;
Context: http, server, location

λ°œκ²¬λ˜μ§€ μ•Šμ€ νŒŒμΌμ— λŒ€ν•œ 였λ₯˜λ₯Ό error_log둜 λ‘œκΉ…ν•˜λŠ” μž‘μ—…μ„ ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

Syntax:  log_subrequest on | off;
Default: log_subrequest off;
Context: http, server, location

ν•˜μœ„ μš”μ²­μ„ access_log둜 λ‘œκΉ…ν•˜λŠ” μž‘μ—…μ„ ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

Syntax:  max_ranges number;
Default: β€”
Context: http, server, location
This directive appeared in version 1.1.2.

λ°”μ΄νŠΈ λ²”μœ„ μš”μ²­μ—μ„œ ν—ˆμš©λ˜λŠ” μ΅œλŒ€ λ²”μœ„ 수λ₯Ό μ œν•œν•©λ‹ˆλ‹€. μ œν•œμ„ μ΄ˆκ³Όν•˜λŠ” μš”μ²­μ€ λ°”μ΄νŠΈ λ²”μœ„λ₯Ό μ§€μ •ν•˜μ§€ μ•Šμ€ κ²ƒμ²˜λŸΌ μ²˜λ¦¬ν•©λ‹ˆλ‹€. 기본적으둜 λ²”μœ„ μˆ˜λŠ” μ œν•œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 0 값은 λ°”μ΄νŠΈ λ²”μœ„ 지원을 μ™„μ „νžˆ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

Syntax:  merge_slashes on | off;
Default: merge_slashes on;
Context: http, server

URIμ—μ„œ 두 개 μ΄μƒμ˜ μΈμ ‘ν•œ μŠ¬λž˜μ‹œλ₯Ό ν•˜λ‚˜μ˜ μŠ¬λž˜μ‹œλ‘œ μ••μΆ•ν•˜λŠ” μž‘μ—…μ„ ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

접두사 λ¬Έμžμ—΄κ³Ό μ •κ·œμ‹ μœ„μΉ˜μ˜ μœ„μΉ˜κ°€ μ˜¬λ°”λ₯Έμ§€ λ°˜λ“œμ‹œ 비ꡐ가 ν•„μš”ν•©λ‹ˆλ‹€. κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ “//scripts/one.php” μš”μ²­μ΄ μΌμΉ˜ν•˜μ§€ μ•Šκ³ ,

location /scripts/ {
    ...
}

κ³ μ • 파일둜 처리될 수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ―€λ‘œ “/scripts/one.php”둜 λ³€ν™˜λ©λ‹ˆλ‹€.

URI에 base64 μΈμ½”λ”©λœ 이름이 있으면 압좕을 offν•΄μ•Ό ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. base64λŠ” λ‚΄λΆ€μ μœΌλ‘œ “/” 문자λ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ³΄μ•ˆμ„ μœ„ν•΄μ„œλŠ” 압좕을 끄지 μ•ŠλŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

이 λͺ…령을 μ„œλ²„ μˆ˜μ€€μ—μ„œ μ§€μ •ν•  경우, κΈ°λ³Έ μ„œλ²„μ˜ 값을 μ‚¬μš©ν•©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ “가상 μ„œλ²„ 선택” μ„Ήμ…˜μ„ μ°Έμ‘°ν•˜μ„Έμš”.

Syntax:  msie_padding on | off;
Default: msie_padding on;
Context: http, server, location

μƒνƒœκ°€ 400 이상인 MSIE ν΄λΌμ΄μ–ΈνŠΈ 응닡에 λŒ€ν•œ λŒ“κΈ€μ„ μΆ”κ°€ν•˜μ—¬ 응닡 μš©λŸ‰μ„ 512λ°”μ΄νŠΈλ‘œ λŠ˜λ¦¬λŠ” 것을 ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

Syntax:  msie_refresh on | off;
Default: msie_refresh off;
Context: http, server, location

MSIE ν΄λΌμ΄μ–ΈνŠΈ λ¦¬λ””λ ‰μ…˜ λŒ€μ‹  μƒˆλ‘œ 고침을 ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

Syntax:  open_file_cache off;
         open_file_cache max=N [inactive=time];
Default: open_file_cache off;
Context: http, server, location

λ‹€μŒμ„ μ €μž₯ν•  수 μžˆλŠ” μΊμ‹œλ₯Ό κ΅¬μ„±ν•©λ‹ˆλ‹€.

  • μ—΄λ¦° 파일 μ„€λͺ…μž, 크기, μˆ˜μ • μ‹œκ°„
  • 디렉터리 쑴재 여뢀에 λŒ€ν•œ 정보
  • 파일 검색 였λ₯˜(“νŒŒμΌμ„ 찾을 수 μ—†μŒ”, “읽기 κΆŒν•œμ΄ μ—†μŒ”)

였λ₯˜ 캐싱은 open_file_cache_errors λͺ…령을 μ‚¬μš©ν•˜μ—¬ λ³„λ„λ‘œ ν™œμ„±ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€.

이 λͺ…령은 λ‹€μŒκ³Ό 같은 λ§€κ°œλ³€μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.

max

μΊμ‹œμ—μ„œ μ΅œλŒ€ μš”μ†Œ 개수λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. μΊμ‹œκ°€ λ„˜μΉ˜λ©΄ κ°€μž₯ 였래 전에 μ‚¬μš©ν•œ(LRU) μš”μ†Œλ₯Ό μ œκ±°ν•©λ‹ˆλ‹€.

inactive

일정 μ‹œκ°„ μ•‘μ„ΈμŠ€κ°€ μ—†μœΌλ©΄ μΊμ‹œμ—μ„œ μš”μ†Œλ₯Ό μ œκ±°ν•˜λŠ” μ‹œκ°„μ„ μ •μ˜ν•©λ‹ˆλ‹€. 기본값은 60μ΄ˆμž…λ‹ˆλ‹€.

off

μΊμ‹œλ₯Ό λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

예:

open_file_cache          max=1000 inactive=20s;
open_file_cache_valid    30s;
open_file_cache_min_uses 2;
open_file_cache_errors   on;
Syntax:  open_file_cache_errors on | off;
Default: open_file_cache_errors off;
Context: http, server, location

open_file_cacheλ₯Ό μ‚¬μš©ν•œ 파일 검색 였λ₯˜μ˜ 캐싱을 ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

Syntax:  open_file_cache_min_uses number;
Default: open_file_cache_min_uses 1;
Context: http, server, location

open_file_cache λͺ…λ Ήμ˜ inactive λ§€κ°œλ³€μˆ˜μ—μ„œ κ΅¬μ„±ν•˜κ³  파일 μ„€λͺ…μžλ₯Ό μΊμ‹œμ—μ„œ 열어두어야 ν•˜λŠ” κΈ°κ°„ λ™μ•ˆ μ΅œμ†Œ 파일 μ•‘μ„ΈμŠ€ numberλ₯Ό μ„€μ •ν•©λ‹ˆλ‹€.

Syntax:  open_file_cache_valid time;
Default: open_file_cache_valid 60s;
Context: http, server, location

일정 μ‹œκ°„μ΄ μ§€λ‚˜ open_file_cache μš”μ†Œλ₯Ό 인증해야 ν•˜λŠ” μ‹œκ°„μ„ μ„€μ •ν•©λ‹ˆλ‹€.

Syntax:  output_buffers number size;
Default: output_buffers 2 32k;
Context: http, server, location

λ””μŠ€ν¬μ—μ„œ 응닡을 μ½λŠ” 데 μ‚¬μš©ν•˜λŠ” λ²„νΌμ˜ number 및 sizeλ₯Ό μ„€μ •ν•©λ‹ˆλ‹€.

1.9.5버전 이전에 기본값은 1 32kμ˜€μŠ΅λ‹ˆλ‹€.

Syntax:  port_in_redirect on | off;
Default: port_in_redirect on;
Context: http, server, location

ngnixμ—μ„œ λ°œμƒν•œ μ ˆλŒ€ λ¦¬λ””λ ‰μ…˜μ—μ„œ 포트 지정을 ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

λ¦¬λ””λ ‰μ…˜μ—μ„œ κΈ°λ³Έ μ„œλ²„ μ΄λ¦„μ˜ μ‚¬μš©μ€ server_name_in_redirect λͺ…λ ΉμœΌλ‘œ μ œμ–΄ν•©λ‹ˆλ‹€.

Syntax:  postpone_output size;
Default: postpone_output 1460;
Context: http, server, location

κ°€λŠ₯ν•  경우, nginxκ°€ 전솑할 μ΅œμ†Œ size(λ°”μ΄νŠΈ)λ₯Ό 확보할 λ•ŒκΉŒμ§€ ν΄λΌμ΄μ–ΈνŠΈ 데이터 전솑을 μ—°κΈ°ν•©λ‹ˆλ‹€. 0 값은 데이터 전솑 μ—°κΈ°λ₯Ό λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

Syntax:  read_ahead size;
Default: read_ahead 0;
Context: http, server, location

파일둜 μž‘μ—…ν•  λ•Œ μ»€λ„μ—μ„œ 미리 읽을 μš©λŸ‰μ„ μ„€μ •ν•©λ‹ˆλ‹€.

Linuxμ—μ„œ posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL) μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ μ‚¬μš©ν•˜κ³ , size λ§€κ°œλ³€μˆ˜λ₯Ό λ¬΄μ‹œν•©λ‹ˆλ‹€.

FreeBSDμ—μ„œλŠ” FreeBSD 9.0-CURRENTλΆ€ν„° μ§€μ›λ˜λŠ” fcntl(O_READAHEAD, size) μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ μ‚¬μš©ν•©λ‹ˆλ‹€. FreeBSD 7은 νŒ¨μΉ˜κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

Syntax:  recursive_error_pages on | off;
Default: recursive_error_pages off;
Context: http, server, location

error_page λͺ…령을 μ‚¬μš©ν•œ μ—¬λŸ¬ 번의 λ¦¬λ””λ ‰μ…˜μ„ ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ λ¦¬λ””λ ‰μ…˜ νšŸμˆ˜λŠ” μ œν•œλ©λ‹ˆλ‹€.

Syntax:  request_pool_size size;
Default: request_pool_size 4k;
Context: http, server

μš”μ²­λ‹Ή λ©”λͺ¨λ¦¬ 할당을 μ •ν™•νžˆ μ‘°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 λͺ…령은 μ„±λŠ₯에 λ―ΈμΉ˜λŠ” 영ν–₯을 μ΅œμ†Œν™”ν•˜λ©°, 일반적으둜 μ‚¬μš©ν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€.

Syntax:  reset_timedout_connection on | off;
Default: reset_timedout_connection off;
Context: http, server, location

μ‹œκ°„ 초과된 μ—°κ²°κ³Ό λΉ„ν‘œμ€€ μ½”λ“œ 444둜 μ’…λ£Œλœ μ—°κ²° μž¬μ„€μ •μ„ ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€(1.15.2). λ‹€μŒκ³Ό 같이 μž¬μ„€μ •μ„ μ‹€ν–‰ν•©λ‹ˆλ‹€. μ†ŒμΌ“μ„ λ‹«κΈ° 전에 μ‹œκ°„μ œν•œ 값을 0으둜 ν•œ SO_LINGER μ˜΅μ…˜μ„ μ„€μ •ν•©λ‹ˆλ‹€. μ†ŒμΌ“μ΄ λ‹«νžˆλ©΄ TCP RSTλ₯Ό ν΄λΌμ΄μ–ΈνŠΈλ‘œ 보내고, 이 μ†ŒμΌ“μ΄ μ‚¬μš©ν•˜λ˜ λͺ¨λ“  λ©”λͺ¨λ¦¬λ₯Ό ν•΄μ œν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ 이미 μ’…λ£Œλ˜κ³  λ²„νΌλ‘œ μ±„μš΄ μ†ŒμΌ“μ΄ FIN_WAIT1 μƒνƒœμ— 였래 머무λ₯΄μ§€ μ•Šκ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Syntax:  resolver address ... [valid=time] [ipv6=on|off] [status_zone=zone];
Default: β€”
Context: http, server, location

μ—…μŠ€νŠΈλ¦Ό μ„œλ²„μ˜ 이름을 μ£Όμ†Œλ‘œ ν™•μΈν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” 이름 μ„œλ²„λ₯Ό κ΅¬μ„±ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

resolver 127.0.0.1 [::1]:5353;

μ£Όμ†ŒλŠ” 포트 μ˜΅μ…˜κ³Ό ν•¨κ»˜ 도메인 μ£Όμ†Œ λ˜λŠ” IP μ£Όμ†Œλ‘œ μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€(1.3.1, 1.2.2). 포트λ₯Ό μ§€μ •ν•˜μ§€ μ•ŠλŠ” 경우 53 포트λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. λ„€μž„ μ„œλ²„λŠ” μˆœν™˜ λ°©μ‹μœΌλ‘œ μΏΌλ¦¬ν•©λ‹ˆλ‹€.

1.1.7버전 μ΄μ „μ—λŠ” ν•˜λ‚˜μ˜ λ„€μž„ μ„œλ²„λ§Œ ꡬ성할 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. IPv6 μ£Όμ†Œλ₯Ό μ‚¬μš©ν•œ λ„€μž„ μ„œλ²„ 지정은 1.3.1 및 1.2.2버전뢀터 μ§€μ›λ©λ‹ˆλ‹€.

기본적으둜 nginxλŠ” ν™•μΈν•˜λŠ” λ™μ•ˆ IPv4 및 IPv6 μ£Όμ†Œλ₯Ό λͺ¨λ‘ μ‘°νšŒν•©λ‹ˆλ‹€. IPv6 μ£Όμ†Œ 쑰회λ₯Ό μ›ν•˜μ§€ μ•ŠμœΌλ©΄ ipv6=off λ§€κ°œλ³€μˆ˜λ₯Ό μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이름을 IPv6 μ£Όμ†Œλ‘œ λ³€κ²½ν•˜λŠ” κΈ°λŠ₯은 1.5.8버전뢀터 μ§€μ›λ©λ‹ˆλ‹€.

기본적으둜 nginx μΊμ‹œλŠ” μ‘λ‹΅μ˜ TTL 값을 μ‚¬μš©ν•˜μ—¬ μ‘λ‹΅ν•©λ‹ˆλ‹€. 선택적 valid λ§€κ°œλ³€μˆ˜λ‘œλ„ μž¬μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

resolver 127.0.0.1 [::1]:5353 valid=30s;

1.1.9버전 μ΄μ „μ—λŠ” 캐싱 μ‹œκ°„μ„ μ‘°μ •ν•  수 μ—†μ—ˆκ³  nginxκ°€ 항상 5λΆ„ λ™μ•ˆ 응닡을 μΊμ‹±ν–ˆμŠ΅λ‹ˆλ‹€.

DNS μŠ€ν‘Έν•‘μ„ λ°©μ§€ν•˜λ €λ©΄ μ μ ˆν•˜κ²Œ λ³΄ν˜Έλ˜λŠ” μ‹ λ’°ν•  수 μžˆλŠ” 둜컬 λ„€νŠΈμ›Œν¬μ—μ„œ DNS μ„œλ²„λ₯Ό κ΅¬μ„±ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

Syntax:  resolver_timeout time;
Default: resolver_timeout 30s;
Context: http, server, location

이름 λ³€ν™˜μ— λŒ€ν•œ μ‹œκ°„μ œν•œμ„ μ„€μ •ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

resolver_timeout 5s;
Syntax:  root path;
Default: root html;
Context: http, server, location, if in location

μš”μ²­μ— λŒ€ν•œ 루트 디렉터리λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ‹€μŒμ˜ κ΅¬μ„±μ—μ„œ

location /i/ {
    root /data/w3;
}

/data/w3/i/top.gif νŒŒμΌμ„ “/i/top.gif” μš”μ²­μ— λŒ€ν•œ μ‘λ‹΅μœΌλ‘œ μ „μ†‘ν•©λ‹ˆλ‹€.

path κ°’μ—λŠ” λ³€μˆ˜λ₯Ό 포함할 수 μžˆμœΌλ‚˜, $document_root 및 $realpath_rootλŠ” μ˜ˆμ™Έμž…λ‹ˆλ‹€.

파일 κ²½λ‘œλŠ” URI을 root λͺ…λ Ή 값에 μΆ”κ°€ν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œ μƒμ„±λ©λ‹ˆλ‹€. URIλ₯Ό μˆ˜μ •ν•΄μ•Ό ν•  경우, alias λͺ…령을 μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

Syntax:  satisfy all | any;
Default: satisfy all;
Context: http, server, location

λͺ¨λ“ (all) λ˜λŠ” 1개 이상(any)의 ngx_http_access_module, ngx_http_auth_basic_module, ngx_http_auth_request_module λ˜λŠ” ngx_http_auth_jwt_module λͺ¨λ“ˆμ—μ„œ μ•‘μ„ΈμŠ€ν•  수 μžˆμ„ 경우, μ•‘μ„ΈμŠ€λ₯Ό ν—ˆμš©ν•©λ‹ˆλ‹€.

예:

location / {
    satisfy any;

    allow 192.168.1.0/32;
    deny  all;

    auth_basic           "closed site";
    auth_basic_user_file conf/htpasswd;
}
Syntax:  send_lowat size;
Default: send_lowat 0;
Context: http, server, location

λͺ…령을 0이 μ•„λ‹Œ κ°’μœΌλ‘œ μ„€μ •ν•˜λ©΄ nginxλŠ” kqueue λ©”μ„œλ“œμ˜ NOTE_LOWAT ν”Œλž˜κ·Έλ‚˜ SO_SNDLOWAT μ†ŒμΌ“ μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈ μ†ŒμΌ“μ—μ„œ 전솑 μž‘μ—… 수λ₯Ό μ΅œμ†Œν™”ν•˜λ €κ³  μ‹œλ„ν•©λ‹ˆλ‹€. 두 κ°€μ§€ 경우 λͺ¨λ‘, μ§€μ •λœ sizeλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

이 λͺ…령은 Linux, Solaris 및 Windowsμ—μ„œ λ¬΄μ‹œλ©λ‹ˆλ‹€.

Syntax:  send_timeout time;
Default: send_timeout 60s;
Context: http, server, location

ν΄λΌμ΄μ–ΈνŠΈλ‘œ 응닡을 μš”μ²­μ„ μ „μ†‘ν•˜λŠ” μ‹œκ°„μ œν•œμ„ μ„€μ •ν•©λ‹ˆλ‹€. μ‹œκ°„μ œν•œμ€ 전체 응닡 전솑이 μ•„λ‹ˆλΌ 두 개의 연속적인 μ“°κΈ° μž‘μ—… μ‚¬μ΄μ—λ§Œ μ„€μ •λ©λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈκ°€ 이 μ‹œκ°„ 내에 아무것도 μ „μ†‘ν•˜μ§€ μ•ŠμœΌλ©΄ 연결이 μ’…λ£Œλ©λ‹ˆλ‹€.

Syntax:  sendfile on | off;
Default: sendfile off;
Context: http, server, location, if in location

sendfile()의 μ‚¬μš©μ„ ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

nginx 0.8.12 및 FreeBSD 5.2.1λΆ€ν„° aioλ₯Ό μ‚¬μš©ν•˜μ—¬ sendfile()에 λŒ€ν•œ 데이터λ₯Ό 미리 λ‘œλ“œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

location /video/ {
    sendfile       on;
    tcp_nopush     on;
    aio            on;
}

이 κ΅¬μ„±μ—μ„œ sendfile()λŠ” SF_NODISKIO ν”Œλž˜κ·Έμ™€ ν•¨κ»˜ 호좜되고, μ΄λŠ” λ””μŠ€ν¬ I/Oμ—μ„œ μ°¨λ‹¨ν•˜λŠ” λŒ€μ‹  데이터가 λ©”λͺ¨λ¦¬μ— μ—†λ‹€λŠ” 정보λ₯Ό λ‹€μ‹œ λ³΄κ³ ν•©λ‹ˆλ‹€. 그러면 nginxκ°€ 1λ°”μ΄νŠΈλ₯Ό μ½μ–΄μ„œ 비동기식 데이터 λ‘œλ“œλ₯Ό μ‹œμž‘ν•©λ‹ˆλ‹€. 첫 번째 μ½κΈ°μ—μ„œ FreeBSD 컀널이 파일의 첫 128K λ°”μ΄νŠΈλ₯Ό λ©”λͺ¨λ¦¬λ‘œ λ‘œλ“œν•˜μ§€λ§Œ λ‹€μŒ μ½κΈ°μ—μ„œλŠ” 16K 청크둜만 데이터λ₯Ό λ‘œλ“œν•©λ‹ˆλ‹€. μ΄λŠ” read_ahead λͺ…령을 μ‚¬μš©ν•˜μ—¬ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

1.7.11버전 μ΄μ „μ—λŠ” aio sendfile;을 μ‚¬μš©ν•˜μ—¬ 미리 λ‘œλ“œν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

Syntax:  sendfile_max_chunk size;
Default: sendfile_max_chunk 2m;
Context: http, server, location

1.21.4버전 μ΄μ „μ—λŠ” 기본적으둜 μ œν•œμ΄ μ—†μ—ˆμŠ΅λ‹ˆλ‹€.

Syntax:  server { ... }
Default: β€”
Context: http

가상 μ„œλ²„μ— λŒ€ν•œ ꡬ성을 μ„€μ •ν•©λ‹ˆλ‹€. IP 기반(IP μ£Όμ†Œ 기반)κ³Ό 이름 기반(“Host” μš”μ²­ 헀더 ν•„λ“œ 기반) 가상 μ„œλ²„λŠ” λͺ…ν™•ν•œ ꡬ뢄이 μ—†μŠ΅λ‹ˆλ‹€. λŒ€μ‹  listen λͺ…령이 μ„œλ²„μ— λŒ€ν•΄ 연결을 μˆ˜λ½ν•΄μ•Ό ν•˜λŠ” λͺ¨λ“  μ£Όμ†Œμ™€ 포트λ₯Ό μ„€λͺ…ν•˜κ³  server_name λͺ…령이 λͺ¨λ“  μ„œλ²„ 이름을 λ‚˜μ—΄ν•©λ‹ˆλ‹€. ꡬ성 μ˜ˆμ‹œλŠ” “nginxκ°€ μš”μ²­μ„ μ²˜λ¦¬ν•˜λŠ” 방법” λ¬Έμ„œμ— λ‚˜μ™€ μžˆμŠ΅λ‹ˆλ‹€.

Syntax:  server_name name ...;
Default: server_name "";
Context: server

가상 μ„œλ²„ 이름을 λ‹€μŒκ³Ό 같이 μ„€μ •ν•©λ‹ˆλ‹€.

server {
    server_name example.com www.example.com;
}

첫 번째 이름이 κΈ°λ³Έ μ„œλ²„ 이름이 λ©λ‹ˆλ‹€.

μ„œλ²„ 이름은 μ΄λ¦„μ˜ 첫 λ²ˆμ§Έλ‚˜ λ§ˆμ§€λ§‰ 뢀뢄을 λ³„ν‘œ(“*”)둜 λŒ€μ²΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

server {
    server_name example.com *.example.com www.example.*;
}

이런 이름을 μ™€μΌλ“œμΉ΄λ“œ 이름이라고 ν•©λ‹ˆλ‹€.

μ•žμ„œ μ–ΈκΈ‰ν•œ 처음의 두 κ°€μ§€ 이름은 ν•˜λ‚˜λ‘œ κ²°ν•©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

server {
    server_name .example.com;
}

이름 μ•žμ— 틸데(“~”)λ₯Ό λΆ™μ—¬μ„œ μ„œλ²„ 이름에 μ •κ·œμ‹μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

server {
    server_name www.example.com ~^www\d+\.example\.com$;
}

μ •κ·œμ‹μ—λŠ” λ‚˜μ€‘μ— λ‹€λ₯Έ λͺ…λ Ήμ—μ„œ μ‚¬μš©ν•  캑처(0.7.40)λ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€.

server {
    server_name ~^(www\.)?(.+)$;

    location / {
        root /sites/$2;
    }
}

server {
    server_name _;

    location / {
        root /sites/default;
    }
}

μ •κ·œμ‹μ˜ 이름 μΊ‘μ²˜λŠ” λ‚˜μ€‘μ— λ‹€λ₯Έ λͺ…λ Ήμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” λ³€μˆ˜(0.8.25)λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

server {
    server_name ~^(www\.)?(?<domain>.+)$;

    location / {
        root /sites/$domain;
    }
}

server {
    server_name _;

    location / {
        root /sites/default;
    }
}

λͺ…λ Ήμ˜ λ§€κ°œλ³€μˆ˜λ₯Ό “$hostname”(0.9.4)으둜 μ„€μ •ν•˜λ©΄, μž₯λΉ„μ˜ 호슀트 이름을 λ„£μŠ΅λ‹ˆλ‹€.

빈 μ„œλ²„ 이름을 μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€(0.7.11).

server {
    server_name www.example.com "";
}

이 μ„œλ²„λŠ” κΈ°λ³Έ μ„œλ²„ λŒ€μ‹  νŠΉμ • μ£Όμ†Œ:포트 μŒμ— λŒ€ν•΄ “Host” 헀더 ν•„λ“œ 없이, μš”μ²­μ„ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” κΈ°λ³Έ μ„€μ •μž…λ‹ˆλ‹€.

0.8.48버전 μ΄μ „μ—λŠ” μž₯λΉ„μ˜ 호슀트 이름을 기본적으둜 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.

μ΄λ¦„μœΌλ‘œ 가상 μ„œλ²„λ₯Ό κ²€μƒ‰ν•˜λŠ” λ™μ•ˆ 이름이 2개 μ΄μƒμ˜ μ§€μ •λœ λ³€μˆ˜μ™€ μΌμΉ˜ν•  경우(μ™€μΌλ“œμΉ΄λ“œ 이름과 μ •κ·œμ‹μ΄ λͺ¨λ‘ μΌμΉ˜ν•˜λŠ” 경우) λ‹€μŒκ³Ό 같은 μˆœμ„œλŒ€λ‘œ 처음 μΌμΉ˜ν•˜λŠ” λ³€μˆ˜κ°€ μ„ νƒλ©λ‹ˆλ‹€.

  1. μ •ν™•ν•œ 이름
  2. *둜 μ‹œμž‘ν•˜λŠ” κ°€μž₯ κΈ΄ μ™€μΌλ“œμΉ΄λ“œ 이름(예: “*.example.com”)
  3. *둜 λλ‚˜λŠ” κ°€μž₯ κΈ΄ μ™€μΌλ“œμΉ΄λ“œ 이름(예: “mail.*”)
  4. 처음 μΌμΉ˜ν•˜λŠ” μ •κ·œμ‹(ꡬ성 νŒŒμΌμ— λ‚˜μ—΄λœ μˆœμ„œ)

μ„œλ²„ 이름에 λŒ€ν•œ μžμ„Έν•œ μ„€λͺ…은 λ³„λ„μ˜ μ„œλ²„ 이름 λ¬Έμ„œμ—μ„œ μ œκ³΅λ©λ‹ˆλ‹€.

Syntax:  server_name_in_redirect on | off;
Default: server_name_in_redirect off;
Context: http, server, location

κΈ°λ³Έ μ„œλ²„ 이름 μ‚¬μš©μ„ ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€. nginxκ°€ λ°œμƒμ‹œν‚¨ μ ˆλŒ€ λ¦¬λ””λ ‰μ…˜μ—μ„œ server_name λͺ…λ ΉμœΌλ‘œ μ§€μ •ν•©λ‹ˆλ‹€. κΈ°λ³Έ μ„œλ²„ 이름 μ‚¬μš©μ„ λΉ„ν™œμ„±ν™”ν•œ 경우, “Host” μš”μ²­ 헀더 ν•„λ“œμ˜ 이름을 μ‚¬μš©ν•©λ‹ˆλ‹€. 이 ν•„λ“œκ°€ 없을 경우, μ„œλ²„ IP μ£Όμ†Œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

Syntax:  server_names_hash_bucket_size size;
Default: server_names_hash_bucket_size 32|64|128;
Context: http
Syntax:  server_names_hash_max_size size;
Default: server_names_hash_max_size 512;
Context: http
Syntax:  server_tokens on | off | build | string;
Default: server_tokens on;
Context: http, server, location

였λ₯˜ νŽ˜μ΄μ§€ 및 “Server” 응닡 헀더 ν•„λ“œμ—μ„œ nginx 버전을 μ „μ†‘ν•˜λŠ” μž‘μ—…μ„ ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

build λ§€κ°œλ³€μˆ˜(1.11.10)λŠ” nginx 버전과 ν•¨κ»˜ λΉŒλ“œ 이름을 전솑할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ, μƒμ—…μš© κ΅¬λ…μ—μ„œλŠ” 1.9.13버전뢀터 였λ₯˜ νŽ˜μ΄μ§€μ˜ μ„œλͺ…κ³Ό”Server” 응닡 헀더 ν•„λ“œ 값을 λ³€μˆ˜λ₯Ό ν¬ν•¨ν•œ string을 μ‚¬μš©ν•˜μ—¬ λͺ…μ‹œμ μœΌλ‘œ μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 빈 λ¬Έμžμ—΄μ€ “Server” ν•„λ“œ 전솑을 λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

Syntax:  subrequest_output_buffer_size size;
Default: subrequest_output_buffer_size 4k|8k;
Context: http, server, location
This directive appeared in version 1.13.10.

ν•˜μœ„ μš”μ²­μ˜ 응닡 본문을 μ „μ†‘ν•˜λŠ” 데 μ‚¬μš©ν•˜λŠ” λ²„νΌμ˜ sizeλ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. 기본적으둜 버퍼 ν¬κΈ°λŠ” λ©”λͺ¨λ¦¬ νŽ˜μ΄μ§€ 1κ°œμ™€ κ°™μŠ΅λ‹ˆλ‹€. ν”Œλž«νΌμ— 따라 4K λ˜λŠ” 8Kκ°€ λ©λ‹ˆλ‹€. ν•˜μ§€λ§Œ ν¬κΈ°λŠ” 더 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€.

이 λͺ…령은 응닡 본문을 λ©”λͺ¨λ¦¬μ— μ €μž₯ν•œ ν•˜μœ„ μš”μ²­μ—λ§Œ μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μ΄λŸ¬ν•œ ν•˜μœ„ μš”μ²­μ€ SSI둜 μƒμ„±ν•©λ‹ˆλ‹€.

Syntax:  tcp_nodelay on | off;
Default: tcp_nodelay on;
Context: http, server, location

TCP_NODELAY μ˜΅μ…˜ μ‚¬μš©μ„ ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€. 연결을 keep-alive μƒνƒœλ‘œ μ „ν™˜ν•˜λ©΄ 이 μ˜΅μ…˜μ΄ ν™œμ„±ν™”λ©λ‹ˆλ‹€. λ˜ν•œ, SSL μ—°κ²°μ—μ„œ 버퍼가 μ—†λŠ” ν”„λ‘μ‹œμ™€ WebSocket ν”„λ‘μ‹œμ— λŒ€ν•΄ ν™œμ„±ν™”λ©λ‹ˆλ‹€.

Syntax:  tcp_nopush on | off;
Default: tcp_nopush off;
Context: http, server, location

FreeBSDμ—μ„œ TCP_NOPUSH μ†ŒμΌ“ μ˜΅μ…˜, λ˜λŠ” Linuxμ—μ„œ TCP_CORK μ†ŒμΌ“ μ˜΅μ…˜μ˜ μ‚¬μš©μ„ ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€. 이 μ˜΅μ…˜μ€ sendfile을 μ‚¬μš©ν•  λ•Œλ§Œ ν™œμ„±ν™”λ©λ‹ˆλ‹€. 이 μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λ©΄

  • Linux 및 FreeBSD 4μ—μ„œ μš”μ²­ 헀더와 파일 첫 뢀뢄을 νŒ¨ν‚· 1개둜 μ „μ†‘ν•©λ‹ˆλ‹€.*;
  • 파일 ν•˜λ‚˜λ₯Ό 전체 νŒ¨ν‚·μœΌλ‘œ μ „μ†‘ν•©λ‹ˆλ‹€.
Syntax:  try_files file ... uri;
         try_files file ... =code;
Default: β€”
Context: server, location

μ§€μ •λœ μˆœμ„œλ‘œ 파일이 μ‘΄μž¬ν•˜λŠ”μ§€ κ²€μ‚¬ν•˜κ³  첫 번째둜 발견된 νŒŒμΌμ„ μš”μ²­ μ²˜λ¦¬μ— μ‚¬μš©ν•©λ‹ˆλ‹€. μ²˜λ¦¬λŠ” ν˜„μž¬ μ»¨ν…μŠ€νŠΈμ— 따라 μ‹€ν–‰λ©λ‹ˆλ‹€. 파일 κ²½λ‘œλŠ” root 및 alias λͺ…령에 따라 file λ§€κ°œλ³€μˆ˜μ—μ„œ μƒμ„±λ©λ‹ˆλ‹€. 이름 끝에 μŠ¬λž˜μ‹œλ₯Ό 뢙이면 디렉터리가 μ‘΄μž¬ν•˜λŠ”μ§€ 검사할 수 μžˆμŠ΅λ‹ˆλ‹€(예: “$uri/”). 아무 νŒŒμΌλ„ μ°Ύμ§€ λͺ»ν•  경우, λ§ˆμ§€λ§‰ λ§€κ°œλ³€μˆ˜μ—μ„œ μ„€μ •ν•œ uri둜 λ‚΄λΆ€ λ¦¬λ””λ ‰μ…˜λ©λ‹ˆλ‹€. 예:

location /images/ {
    try_files $uri /images/default.gif;
}

location = /images/default.gif {
    expires 30s;
}

λ§ˆμ§€λ§‰ λ§€κ°œλ³€μˆ˜λŠ” 이름이 μ§€μ •λœ μœ„μΉ˜λ₯Ό 가리킬 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. 0.7.51버전뢀터 λ§ˆμ§€λ§‰ λ§€κ°œλ³€μˆ˜λŠ” codeκ°€ 될 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

location / {
    try_files $uri $uri/index.html $uri.html =404;
}

Mongrel ν”„λ‘μ‹œ μ˜ˆμ‹œ:

location / {
    try_files /system/maintenance.html
              $uri $uri/index.html $uri.html
              @mongrel;
}

location @mongrel {
    proxy_pass http://mongrel;
}

Drupal/FastCGI μ˜ˆμ‹œ:

location / {
    try_files $uri $uri/ @drupal;
}

location ~ \.php$ {
    try_files $uri @drupal;

    fastcgi_pass ...;

    fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME     $fastcgi_script_name;
    fastcgi_param QUERY_STRING    $args;

    ... other fastcgi_param's
}

location @drupal {
    fastcgi_pass ...;

    fastcgi_param SCRIPT_FILENAME /path/to/index.php;
    fastcgi_param SCRIPT_NAME     /index.php;
    fastcgi_param QUERY_STRING    q=$uri&$args;

    ... other fastcgi_param's
}

λ‹€μŒμ˜ μ˜ˆμ‹œμ—μ„œ

location / {
    try_files $uri $uri/ @drupal;
}

try_files λͺ…령은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

location / {
    error_page 404 = @drupal;
    log_not_found off;
}

이 경우,

location ~ \.php$ {
    try_files $uri @drupal;

    fastcgi_pass ...;

    fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;

    ...
}

try_files은 PHP 파일이 μžˆλŠ”μ§€ ν™•μΈν•œ λ‹€μŒ, μš”μ²­μ„ FastCGI μ„œλ²„λ‘œ μ „λ‹¬ν•©λ‹ˆλ‹€.

WordPress 및 Joomla μ˜ˆμ‹œ:

location / {
    try_files $uri $uri/ @wordpress;
}

location ~ \.php$ {
    try_files $uri @wordpress;

    fastcgi_pass ...;

    fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
    ... other fastcgi_param's
}

location @wordpress {
    fastcgi_pass ...;

    fastcgi_param SCRIPT_FILENAME /path/to/index.php;
    ... other fastcgi_param's
}
Syntax:  types { ... }
Default: types {
             text/html  html;
             image/gif  gif;
             image/jpeg jpg;
         }
Context: http, server, location

파일 이름 ν™•μž₯자λ₯Ό MIME μœ ν˜•μ˜ 응닡에 λ§€ν•‘ν•©λ‹ˆλ‹€. ν™•μž₯μžλŠ” λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•©λ‹ˆλ‹€. λ‹€μŒκ³Ό 같이 μ—¬λŸ¬ ν™•μž₯자λ₯Ό ν•˜λ‚˜μ˜ μœ ν˜•μ— λ§€ν•‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

types {
    application/octet-stream bin exe dll;
    application/octet-stream deb;
    application/octet-stream dmg;
}

nginxμ—μ„œ μΆ©λΆ„νžˆ μ±„μš΄ λ§€ν•‘ ν…Œμ΄λΈ”μ„ conf/mime.types νŒŒμΌμ— λ°°ν¬ν•©λ‹ˆλ‹€.

νŠΉμ • μœ„μΉ˜μ—μ„œ λͺ¨λ“  μš”μ²­μ— λŒ€ν•΄ “application/octet-stream” MIME μœ ν˜•μ„ μ „μ†‘ν•˜λ„λ‘ ν•˜λ €λ©΄ λ‹€μŒμ˜ ꡬ성을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

location /download/ {
    types        { }
    default_type application/octet-stream;
}
Syntax:  types_hash_bucket_size size;
Default: types_hash_bucket_size 64;
Context: http, server, location

μœ ν˜• ν•΄μ‹œ ν…Œμ΄λΈ”μ˜ 버킷 μš©λŸ‰μ„ μ„€μ •ν•©λ‹ˆλ‹€. ν•΄μ‹œ ν…Œμ΄λΈ”μ„ μ„€μ •ν•˜λŠ” μ„ΈλΆ€ μ •λ³΄λŠ” λ³„λ„μ˜ λ¬Έμ„œμ—μ„œ μ œκ³΅ν•©λ‹ˆλ‹€.

1.5.13버전뢀터 기본값은 ν”„λ‘œμ„Έμ„œ μΊμ‹œ ν–‰μ˜ 크기에 따라 λ‹¬λΌμ§‘λ‹ˆλ‹€.

Syntax:  types_hash_max_size size;
Default: types_hash_max_size 1024;
Context: http, server, location

μœ ν˜• ν•΄μ‹œ ν…Œμ΄λΈ”μ˜ μ΅œλŒ€ sizeλ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. ν•΄μ‹œ ν…Œμ΄λΈ”μ„ μ„€μ •ν•˜λŠ” μ„ΈλΆ€ μ •λ³΄λŠ” λ³„λ„μ˜ λ¬Έμ„œμ—μ„œ μ œκ³΅ν•©λ‹ˆλ‹€.

Syntax:  underscores_in_headers on | off;
Default: underscores_in_headers off;
Context: http, server

ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­ 헀더 ν•„λ“œμ—μ„œ 밑쀄 μ‚¬μš©μ„ ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€. 밑쀄 μ‚¬μš©μ„ λΉ„ν™œμ„±ν™”ν•œ 경우, 이름에 밑쀄이 μžˆλŠ” μš”μ²­ 헀더 ν•„λ“œλŠ” μœ νš¨ν•˜μ§€ μ•Šμ€ κ²ƒμœΌλ‘œ ν‘œμ‹œλ˜κ³  ignore_invalid_headers λͺ…령을 μ μš©ν•©λ‹ˆλ‹€.

Syntax:  variables_hash_bucket_size size;
Default: variables_hash_bucket_size 64;
Context: http
Syntax:  variables_hash_max_size size;
Default: variables_hash_max_size 1024;
Context: http

λ³€μˆ˜ ν•΄μ‹œ ν…Œμ΄λΈ”μ˜ μ΅œλŒ€ sizeλ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. ν•΄μ‹œ ν…Œμ΄λΈ”μ„ μ„€μ •ν•˜λŠ” μ„ΈλΆ€ μ •λ³΄λŠ” λ³„λ„μ˜ λ¬Έμ„œμ—μ„œ μ œκ³΅ν•©λ‹ˆλ‹€.

버전 1.5.13 μ΄μ „μ—λŠ” 기본값이 512μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

μž„λ² λ””λ“œ λ³€μˆ˜

ngx_http_core_module λͺ¨λ“ˆμ€ Apache Server λ³€μˆ˜μ™€ 이름이 μΌμΉ˜ν•˜λŠ” ν¬ν•¨λœ λ³€μˆ˜λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€. λ¨Όμ € 이듀은 ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­ 헀더 ν•„λ“œλ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ³€μˆ˜μž…λ‹ˆλ‹€(예: $http_user_agent, $http_cookie). λ‹€λ₯Έ λ³€μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

$arg_name

μš”μ²­ ν–‰μ˜ 인수 name in the request line

$args

μš”μ²­ ν–‰μ˜ 인수

$binary_remote_addr

λ°”μ΄λ„ˆλ¦¬ ν˜•μ‹μ˜ ν΄λΌμ΄μ–ΈνŠΈ μ£Όμ†Œ κ°’μ˜ κΈΈμ΄λŠ” 항상 IPv4 μ£Όμ†Œμ˜ 경우 4λ°”μ΄νŠΈ, IPv6 μ£Όμ†Œμ˜ 경우 16λ°”μ΄νŠΈ

$body_bytes_sent

응닡 헀더λ₯Ό λ°˜μ˜ν•˜μ§€ μ•Šμ€ ν΄λΌμ΄μ–ΈνŠΈλ‘œ μ „μ†‘λœ λ°”μ΄νŠΈ μš©λŸ‰. 이 λ³€μˆ˜λŠ” mod_log_config Apache λͺ¨λ“ˆμ˜ “%B” λ§€κ°œλ³€μˆ˜μ™€ ν˜Έν™˜λ©λ‹ˆλ‹€.

$bytes_sent

ν΄λΌμ΄μ–ΈνŠΈλ‘œ μ „μ†‘λœ λ°”μ΄νŠΈ μš©λŸ‰(1.3.8, 1.2.5)

$connection

μ—°κ²° 일련번호(1.3.8, 1.2.5)

$connection_requests

연결을 톡해 보낸 μš”μ²­ 수(1.3.8, 1.2.5)

$connection_time

μ—°κ²° μ‹œκ°„(초), ms λ‹¨μœ„κΉŒμ§€ ν‘œμ‹œ(1.19.10)

$content_length

“Content-Length” μš”μ²­ 헀더 ν•„λ“œ

$content_type

“Content-Type” μš”μ²­ 헀더 ν•„λ“œ

$cookie_name

name μΏ ν‚€

$document_root

ν˜„μž¬ μš”μ²­μ— λŒ€ν•œ root λ˜λŠ” alias λͺ…λ Ή κ°’

$uri와 동일

$host

μš°μ„ μˆœμœ„: μš”μ²­ ν–‰μ˜ 호슀트 이름, λ˜λŠ” “Host” μš”μ²­ 헀더 ν•„λ“œμ˜ 호슀트 이름, λ˜λŠ” μš”μ²­κ³Ό μΌμΉ˜ν•˜λŠ” μ„œλ²„ 이름

$hostname

호슀트 이름

$http_name

μž„μ˜μ˜ μš”μ²­ 헀더 ν•„λ“œ. λ³€μˆ˜ μ΄λ¦„μ˜ λ§ˆμ§€λ§‰ 뢀뢄은 λ°‘μ€„λ‘œ λŒ€μ‹œλ₯Ό κ΅μ²΄ν•˜κ³  μ†Œλ¬Έμžλ‘œ λ³€ν™˜ν•œ ν•„λ“œ μ΄λ¦„μž…λ‹ˆλ‹€.

연결이 SSL λͺ¨λ“œμ—μ„œ μž‘λ™ν•  경우 “on”, κ·Έ 외에 λ‹€λ₯Έ κ²½μš°μ—λŠ” 빈 λ¬Έμžμ—΄

$is_args

μš”μ²­ 행에 μΈμˆ˜κ°€ μžˆμ„ 경우 “?”, κ·Έ 외에 λ‹€λ₯Έ κ²½μš°μ—λŠ” 빈 λ¬Έμžμ—΄

$limit_rate

이 λ³€μˆ˜λ₯Ό μ„€μ •ν•˜λ©΄ 응닡 속도가 μ œν•œλ©λ‹ˆλ‹€. limit_rateλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

$msec

μ—°κ²° μ‹œκ°„(초), ms λ‹¨μœ„κΉŒμ§€ ν‘œμ‹œ(1.3.9, 1.2.6)

$nginx_version

nginx 버전

$pid

μž‘μ—…μž ν”„λ‘œμ„ΈμŠ€μ˜ PID

$pipe

“p”(μš”μ²­μ΄ νŒŒμ΄ν”„λΌμΈν™”λœ 경우), “.”(κ·Έ μ™Έμ˜ λ‹€λ₯Έ 경우)(1.3.12, 1.2.7)

$proxy_protocol_addr

PROXY ν”„λ‘œν† μ½œ ν—€λ”μ˜ ν΄λΌμ΄μ–ΈνŠΈ μ£Όμ†Œ(1.5.12)

PROXY ν”„λ‘œν† μ½œμ€ listen λͺ…λ Ήμ—μ„œ proxy_protocol λ§€κ°œλ³€μˆ˜λ₯Ό μ„€μ •ν•˜μ—¬ 미리 ν™œμ„±ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€.

$proxy_protocol_port

PROXY ν”„λ‘œν† μ½œ ν—€λ”μ˜ ν΄λΌμ΄μ–ΈνŠΈ 포트(1.11.0)

PROXY ν”„λ‘œν† μ½œμ€ listen λͺ…λ Ήμ—μ„œ proxy_protocol λ§€κ°œλ³€μˆ˜λ₯Ό μ„€μ •ν•˜μ—¬ 미리 ν™œμ„±ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€.

$proxy_protocol_server_addr

PROXY ν”„λ‘œν† μ½œ ν—€λ”μ˜ μ„œλ²„ μ£Όμ†Œ(1.17.6)

PROXY ν”„λ‘œν† μ½œμ€ listen λͺ…λ Ήμ—μ„œ proxy_protocol λ§€κ°œλ³€μˆ˜λ₯Ό μ„€μ •ν•˜μ—¬ 미리 ν™œμ„±ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€.

$proxy_protocol_server_port

PROXY ν”„λ‘œν† μ½œ ν—€λ”μ˜ μ„œλ²„ 포트(1.17.6)

PROXY ν”„λ‘œν† μ½œμ€ listen λͺ…λ Ήμ—μ„œ proxy_protocol λ§€κ°œλ³€μˆ˜λ₯Ό μ„€μ •ν•˜μ—¬ 미리 ν™œμ„±ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€.

$query_string

$args와 동일

$realpath_root

$remote_addr

ν΄λΌμ΄μ–ΈνŠΈ μ£Όμ†Œ 

$remote_port

ν΄λΌμ΄μ–ΈνŠΈ 포트 

$remote_user

κΈ°λ³Έ 인증으둜 제곡된 μ‚¬μš©μž 이름

$request

전체 원본 μš”μ²­ ν–‰

$request_body

μš”μ²­ λ³Έλ¬Έ. λ³€μˆ˜ 이름은 μš”μ²­ 본문을 λ©”λͺ¨λ¦¬ λ²„νΌλ‘œ μ½μ—ˆμ„ λ•Œ proxy_pass, fastcgi_pass, uwsgi_pass 및 scgi_passμ—μ„œ μ²˜λ¦¬ν•˜λŠ” μœ„μΉ˜μ—μ„œ μ œκ³΅λ©λ‹ˆλ‹€.

$request_body_file

μš”μ²­ 본문이 μžˆλŠ” μž„μ‹œ 파일 이름

μ²˜λ¦¬κ°€ 끝날 λ•Œ 파일 제거 ν•„μš” μš”μ²­ 본문을 항상 파일둜 μž‘μ„±ν•˜λ €λ©΄ client_body_in_file_onlyλ₯Ό ν™œμ„±ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€. μž„μ‹œ 파일 이름을 ν”„λ‘μ‹œλœ μš”μ²­μ΄λ‚˜ FastCGI/uwsgi/SCGI μ„œλ²„μ— λŒ€ν•œ μš”μ²­μ—μ„œ 전달할 경우, μš”μ²­ λ³Έλ¬Έ 전솑은 각각 proxy_pass_request_body off, fastcgi_pass_request_body off, uwsgi_pass_request_body off, scgi_pass_request_body off λͺ…λ ΉμœΌλ‘œ λΉ„ν™œμ„±ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€.

$request_completion

μš”μ²­μ΄ μ™„λ£Œλœ 경우 “OK”, κ·Έ 외에 λ‹€λ₯Έ 경우 빈 λ¬Έμžμ—΄

$request_filename

$request_id

16개 랜덀 λ°”μ΄νŠΈλ‘œ μƒμ„±ν•œ 16μ§„μˆ˜ 고유 μš”μ²­ μ‹λ³„μž(1.11.0)

$request_length

$request_method

μš”μ²­ λ©”μ„œλ“œ, 일반적으둜 “GET” λ˜λŠ” “POST”

$request_time

μš”μ²­ 처리 μ‹œκ°„(초), ms λ‹¨μœ„κΉŒμ§€ ν‘œμ‹œ(1.3.9, 1.2.6). 첫 λ°”μ΄νŠΈλ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ 읽은 μ΄ν›„λ‘œ κ²½κ³Όν•œ μ‹œκ°„

$request_uri

전체 원본 μš”μ²­ URI(인수 포함)

$scheme

μš”μ²­ 체계 “http” λ˜λŠ” “https”

$sent_http_name

μž„μ˜μ˜ 응닡 헀더 ν•„λ“œ. λ³€μˆ˜ μ΄λ¦„μ˜ λ§ˆμ§€λ§‰ 뢀뢄은 밑쀄을 λŒ€μ‹œλ‘œ κ΅μ²΄ν•˜κ³  μ†Œλ¬Έμžλ‘œ λ³€ν™˜ν•œ ν•„λ“œ μ΄λ¦„μž…λ‹ˆλ‹€.

$sent_trailer_name

응닡 끝에 μ „μ†‘ν•œ μž„μ˜μ˜ ν•„λ“œ(1.13.2). λ³€μˆ˜ μ΄λ¦„μ˜ λ§ˆμ§€λ§‰ 뢀뢄은 λŒ€μ‹œλ₯Ό λ°‘μ€„λ‘œ κ΅μ²΄ν•˜κ³  μ†Œλ¬Έμžλ‘œ λ³€ν™˜ν•œ 파일 μ΄λ¦„μž…λ‹ˆλ‹€.

$server_addr

μš”μ²­μ„ μˆ˜λ½ν•œ μ„œλ²„ μ£Όμ†Œ

이 λ³€μˆ˜ 값을 κ³„μ‚°ν•˜λ €λ©΄ 일반적으둜 μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ ν•œ 번 보내야 ν•©λ‹ˆλ‹€. μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ 보내지 μ•ŠμœΌλ €λ©΄ listen λͺ…λ Ήμ—μ„œ μ£Όμ†Œλ₯Ό μ§€μ •ν•˜κ³  bind λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

$server_name

μš”μ²­μ„ μˆ˜λ½ν•œ μ„œλ²„ 이름

$server_port

μš”μ²­μ„ μˆ˜λ½ν•œ μ„œλ²„μ˜ 포트

$server_protocol

μš”μ²­ ν”„λ‘œν† μ½œ, 일반적으둜 “HTTP/1.0”, “HTTP/1.1” λ˜λŠ” “HTTP/2.0”

$status

응닡 μƒνƒœ(1.3.2, 1.2.2)

$tcpinfo_rtt$tcpinfo_rttvar$tcpinfo_snd_cwnd$tcpinfo_rcv_space

ν΄λΌμ΄μ–ΈνŠΈ TCP 연결에 λŒ€ν•œ 정보, TCP_INFO μ†ŒμΌ“ μ˜΅μ…˜μ„ μ§€μ›ν•˜λŠ” μ‹œμŠ€ν…œμ— 제곡

$time_iso8601

ISO 8601 ν‘œμ€€ ν˜•μ‹μ˜ 둜컬 μ‹œκ°„(1.3.12, 1.2.7)

$time_local

곡톡 둜그 ν˜•μ‹μ˜ 둜컬 μ‹œκ°„(1.3.12, 1.2.7)

$uri

μš”μ²­μ˜ ν˜„μž¬ URI, μ •κ·œν™”λ¨

$uri 값은 μš”μ²­ 처리 쀑(예: λ‚΄λΆ€ λ¦¬λ””λ ‰μ…˜, 인덱슀 파일 μ‚¬μš© 쀑)에 변경될 수 μžˆμŠ΅λ‹ˆλ‹€.