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κ° μ΄μμ μ§μ λ λ³μμ μΌμΉν κ²½μ°(μμΌλμΉ΄λ μ΄λ¦κ³Ό μ κ·μμ΄ λͺ¨λ μΌμΉνλ κ²½μ°) λ€μκ³Ό κ°μ μμλλ‘ μ²μ μΌμΉνλ λ³μκ° μ νλ©λλ€.
- μ νν μ΄λ¦
- *λ‘ μμνλ κ°μ₯ κΈ΄ μμΌλμΉ΄λ μ΄λ¦(μ: “*.example.com”)
- *λ‘ λλλ κ°μ₯ κΈ΄ μμΌλμΉ΄λ μ΄λ¦(μ: “mail.*”)
- μ²μ μΌμΉνλ μ κ·μ(κ΅¬μ± νμΌμ λμ΄λ μμ)
μλ² μ΄λ¦μ λν μμΈν μ€λͺ μ λ³λμ μλ² μ΄λ¦ λ¬Έμμμ μ 곡λ©λλ€.
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 κ°μ μμ² μ²λ¦¬ μ€(μ: λ΄λΆ 리λλ μ , μΈλ±μ€ νμΌ μ¬μ© μ€)μ λ³κ²½λ μ μμ΅λλ€.