ngx_http_proxy_module
ngx_http_proxy_module λͺ¨λμ ν΅ν΄ λ€λ₯Έ μλ²μ μμ²μ μ λ¬ν μ μμ΅λλ€.
μμ ꡬμ±
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
Directives
Syntax: proxy_bind address [transparent] | off;
Default: β
Context: http, server, location
This directive appeared in version 0.8.22.
νλ‘μ μ€μ λ μλ²λ‘ λκ°λ μ°κ²°μ΄ ν¬νΈ μ΅μ μ΄ μλ μ§μ λ λ‘컬 IP μ£Όμμμ μμλλλ‘ ν©λλ€(1.11.2). λ§€κ°λ³μ κ°μλ λ³μ(1.3.12)κ° ν¬ν¨λ μ μμ΅λλ€. νΉμ κ° off(1.3.12)λ μ΄μ κ΅¬μ± μμ€μμ μμλ proxy_bind λͺ λ Ήμ ν¨κ³Όλ₯Ό μ·¨μνκ³ μ΄λ₯Ό ν΅ν΄ μμ€ν μ λ‘컬 IP μ£Όμ λ° ν¬νΈλ₯Ό μλ ν λΉν μ μμ΅λλ€.
transparent λ§€κ°λ³μ(1.11.0)λ₯Ό μ¬μ©νμ¬ νλ‘μ μ€μ λ μλ²λ‘ λκ°λ μ°κ²°μ΄ λΉλ‘컬 IP μ£Όμ, μλ₯Ό λ€μ΄ ν΄λΌμ΄μΈνΈμ μ€μ IP μ£Όμμμ μμλ μ μμ΅λλ€.
proxy_bind $remote_addr transparent;
Syntax: proxy_buffer_size size;
Default: proxy_buffer_size 4k|8k;
Context: http, server, location
Syntax: proxy_buffering on | off;
Default: proxy_buffering on;
Context: http, server, location
νλ‘μ μ€μ λ μλ²μμ μλ΅μ λ²νΌλ§μ νμ±ννκ±°λ λΉνμ±νν©λλ€.
λ²νΌλ§μ΄ νμ±νλλ©΄ nginxλ κ°λ₯ν ν 빨리 νλ‘μ μ€μ λ μλ²μμ μλ΅μ μμ νμ¬ proxy_buffer_size λ° proxy_buffers λͺ λ ΉμΌλ‘ μ€μ λ λ²νΌμ μ μ₯ν©λλ€. μ 체 μλ΅μ΄ λ©λͺ¨λ¦¬μ λ§μ§ μμΌλ©΄ μΌλΆλ₯Ό λμ€ν¬μ μμ νμΌμ μ μ₯ν μ μμ΅λλ€. μμ νμΌμ μ°κΈ°λ proxy_max_temp_file_size λ° proxy_temp_file_write_size λͺ λ ΉμΌλ‘ μ μ΄λ©λλ€.
λ²νΌλ§μ΄ λΉνμ±νλλ©΄ μλ΅μ΄ μμ λμλ§μ ν΄λΌμ΄μΈνΈλ‘ λμμ μ λ¬λ©λλ€. Nginxλ νλ‘μ μ€μ λ μλ²μμ μ 체 μλ΅μ μ½μΌλ € νμ§ μμ΅λλ€. nginxκ° ν λ²μ μλ²μμ μμ ν μ μλ λ°μ΄ν°μ μ΅λ ν¬κΈ°λ proxy_buffer_size λͺ λ ΉμΌλ‘ μ€μ λ©λλ€.
Syntax: proxy_buffers number size;
Default: proxy_buffers 8 4k|8k;
Context: http, server, location
λ¨μΌ μ°κ²°μ κ²½μ° νλ‘μ μ€μ λ μλ²μμ μλ΅μ μ½λ λ° μ¬μ©λλ λ²νΌμ μ λ° ν¬κΈ°λ₯Ό μ€μ ν©λλ€. κΈ°λ³Έμ μΌλ‘ λ²νΌ ν¬κΈ°λ λ©λͺ¨λ¦¬ νμ΄μ§ 1κ°μ κ°μ΅λλ€. νλ«νΌμ λ°λΌ 4K λλ 8Kκ° λ©λλ€.
Syntax: proxy_busy_buffers_size size;
Default: proxy_busy_buffers_size 8k|16k;
Context: http, server, location
νλ‘μ μ€μ λ μλ²μ μλ΅ λ²νΌλ§μ΄ νμ±νλλ©΄ ν΄λΌμ΄μΈνΈμ μλ΅μ μ μ‘νλ λ° μ¬μ©ν μ μλ λ²νΌμ μ΄ ν¬κΈ°κ° μ νλκ³ μλ΅μ΄ μμ§ μμ ν μ½νμ§ μμ΅λλ€. κ·Έλμ λλ¨Έμ§ λ²νΌκ° μλ΅μ μ½λ λ° μ¬μ©λ μ μκ³ νμν κ²½μ° μμ νμΌμ λν μλ΅μ λ²νΌλ§ λΆλΆμ΄ μ¬μ©λ©λλ€. κΈ°λ³Έμ μΌλ‘, ν¬κΈ°λ proxy_buffer_size λ° proxy_buffers λͺ λ ΉμΌλ‘ μ€μ λ 2κ° λ²νΌμ ν¬κΈ°λ‘ μ νλ©λλ€.
Syntax: proxy_cache zone | off;
Default: proxy_cache off;
Context: http, server, location
μΊμ±μ μ¬μ©λλ 곡μ λ©λͺ¨λ¦¬ μμμ μ μν©λλ€. λμΌν μμμ΄ μ¬λ¬ μμΉμμ μ¬μ©λ μ μμ΅λλ€. λ§€κ°λ³μ κ°μλ λ³μ(1.7.9)κ° ν¬ν¨λ μ μμ΅λλ€. off λ§€κ°λ³μλ μ΄μ κ΅¬μ± μμ€μμ μμλ μΊμ±μ λΉνμ±νν©λλ€.
Syntax: proxy_cache_background_update on | off;
Default: proxy_cache_background_update off;
Context: http, server, location
This directive appeared in version 1.11.10.
λ°±κ·ΈλΌμ΄λ νμ μμ²μ μμνμ¬ λ§λ£λ μΊμ νλͺ©μ μ λ°μ΄νΈν μ μκ³ κ·Έλμ μ€λλ μΊμλ μλ΅μ΄ ν΄λΌμ΄μΈνΈλ‘ λ°νλ©λλ€. μ€λλ μΊμλ μλ΅μ΄ μ λ°μ΄νΈλ λ ν΄λΉ μλ΅μ μ¬μ©μ νμ©ν΄μΌ ν©λλ€.
Syntax: proxy_cache_bypass string ...;
Default: β
Context: http, server, location
μΊμμμ μλ΅μ κ°μ Έμ€μ§ μλ 쑰건μ μ μν©λλ€. λ¬Έμμ΄ λ§€κ°λ³μμ νλ μ΄μμ κ°μ΄ λΉμ΄ μμ§ μκ³ “0”κ³Ό κ°μ§ μμΌλ©΄ μΊμμμ μλ΅μ κ°μ Έμ€μ§ μμ΅λλ€.
proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
proxy_cache_bypass $http_pragma $http_authorization;
proxy_no_cache λͺ λ Ήκ³Ό ν¨κ» μ¬μ©ν μ μμ΅λλ€.
Syntax: proxy_cache_convert_head on | off;
Default: proxy_cache_convert_head on;
Context: http, server, location
This directive appeared in version 1.9.7.
μΊμ±μ μν΄ “HEAD” λ©μλλ₯Ό “GET”μΌλ‘ λ³ννλ κ²μ νμ±ννκ±°λ λΉνμ±νν©λλ€. λ³νμ΄ λΉνμ±νλλ©΄ cache keyλ $request_methodλ₯Ό ν¬ν¨νλλ‘ κ΅¬μ±λμ΄μΌ ν©λλ€.
Syntax: proxy_cache_key string;
Default: proxy_cache_key $scheme$proxy_host$request_uri;
Context: http, server, location
μλ₯Ό λ€μ΄, μΊμ±μ ν€λ₯Ό μ μν©λλ€.
proxy_cache_key "$host$request_uri $cookie_user";
κΈ°λ³Έμ μΌλ‘ λͺ λ Ή κ°μ λ¬Έμμ΄μ κ°κΉμ΅λλ€.
proxy_cache_key $scheme$proxy_host$uri$is_args$args;
Syntax: proxy_cache_lock on | off;
Default: proxy_cache_lock off;
Context: http, server, location
This directive appeared in version 1.1.12.
νμ±νλλ©΄ νλ‘μ μ€μ λ μλ²λ‘ μμ²μ μ λ¬νμ¬ ν λ²μ νλμ μμ²λ§ proxy_cache_key λͺ λ Ήμ λ°λΌ μλ³λ μ μΊμ μμλ₯Ό μ±μΈ μ μμ΅λλ€. λμΌν μΊμ μμμ λ€λ₯Έ μμ²μ proxy_cache_lock_timeout λͺ λ ΉμΌλ‘ μ€μ λ μκ°κΉμ§ μλ΅μ΄ μ΄ μμκ° λ¦΄λ¦¬μ€λ μΊμ λλ μΊμ μ κΈμ νμλ λκΉμ§ κΈ°λ€λ¦½λλ€.
Syntax: proxy_cache_lock_age time;
Default: proxy_cache_lock_age 5s;
Context: http, server, location
This directive appeared in version 1.7.8.
μ μΊμ μμλ₯Ό μ±μ°κΈ° μν΄ νλ‘μ μ€μ λ μλ²λ‘ μ λ¬λ λ§μ§λ§ μμ²μ΄ μ§μ λ μκ° λμ μλ£λμ§ μμμΌλ©΄ νλ‘μ μ€μ λ μλ²λ‘ μμ²μ΄ νλ λ μ λ¬λ μ μμ΅λλ€.
Syntax: proxy_cache_lock_timeout time;
Default: proxy_cache_lock_timeout 5s;
Context: http, server, location
This directive appeared in version 1.1.12.
proxy_cache_lockμ λν μκ°μ νμ μ€μ ν©λλ€. μκ°μ΄ λ§λ£λλ©΄ μμ²μ΄ νλ‘μ μ€μ λ μλ²λ‘ μ λ¬λμ§λ§ μλ΅μ μΊμλμ§ μμ΅λλ€.
1.7.8 μ΄μ μλ μλ΅μ μΊμν μ μμμ΅λλ€.
Syntax: proxy_cache_max_range_offset number;
Default: β
Context: http, server, location
This directive appeared in version 1.11.6.
λ°μ΄νΈ λ²μ μμ²μ λν΄ λ°μ΄νΈ λ¨μλ‘ μ€νμ μ μ€μ ν©λλ€. λ²μκ° μ€νμ μ λμ΄μλ©΄ λ²μ μμ²μ΄ νλ‘μ μ€μ λ μλ²λ‘ μ λ¬λκ³ μλ΅μ΄ μΊμλμ§ μμ΅λλ€.
Syntax: proxy_cache_methods GET | HEAD | POST ...;
Default: proxy_cache_methods GET HEAD;
Context: http, server, location
This directive appeared in version 0.7.59.
ν΄λΌμ΄μΈνΈ μμ² λ©μλκ° μ΄ λͺ λ Ήμ λμ΄λλ©΄ μλ΅μ΄ μΊμλ©λλ€. “GET” λ° “HEAD” λ©μλλ νμ λͺ©λ‘μ μΆκ°λμ§λ§ λͺ μμ μΌλ‘ μ§μ νλ κ²μ΄ μ’μ΅λλ€. proxy_no_cache λͺ λ Ήλ μ°Έμ‘°νμΈμ.
Syntax: proxy_cache_min_uses number;
Default: proxy_cache_min_uses 1;
Context: http, server, location
μ΄νμ μλ΅μ΄ μΊμλλ μμ² μλ₯Ό μ€μ ν©λλ€.
Syntax: proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time]
[max_size=size] [min_free=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time]
[loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number]
[purger_sleep=time] [purger_threshold=time];
Default: β
Context: http
μΊμμ κ²½λ‘μ λ€λ₯Έ λ§€κ°λ³μλ₯Ό μ€μ ν©λλ€. μΊμ λ°μ΄ν°λ νμΌμ μ μ₯λ©λλ€. μΊμμ νμΌ μ΄λ¦μ MD5 ν¨μλ₯Ό μΊμ ν€μ μ μ©ν κ²°κ³Όμ λλ€. levels λ§€κ°λ³μκ° 1~3μ μΊμ κ³μΈ΅ ꡬ쑰 μμ€μ μ μνκ³ κ° μμ€μ κ° 1 λλ 2λ₯Ό μλ½ν©λλ€. μλ₯Ό λ€μ΄, λ€μ ꡬμ±μμ
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
μΊμμ νμΌ μ΄λ¦μ λ€μκ³Ό κ°μ΅λλ€.
/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
μΊμλ μλ΅μ λ¨Όμ μμ νμΌμ κΈ°λ‘λ λ€μ νμΌ μ΄λ¦μ΄ λ³κ²½λ©λλ€. λ²μ 0.8.9λΆν° μμ νμΌκ³Ό μΊμλ λ€λ₯Έ νμΌ μμ€ν μ λ£μ μ μμ΅λλ€. νμ§λ§ μ΄ κ²½μ° λΉμ©μ΄ μ κ² λλ μ΄λ¦ λ³κ²½ μμ λμ 2κ°μ νμΌ μμ€ν μ 체μμ νμΌμ΄ 볡μ¬λ©λλ€. λ°λΌμ μ£Όμ΄μ§ μμΉμμ μΊμμ μμ νμΌ ν¬ν¨ λλ ν°λ¦¬ λͺ¨λ λμΌν νμΌ μμ€ν μ λ£λ κ²μ΄ μ’μ΅λλ€. μμ νμΌμ© λλ ν°λ¦¬λ use_temp_path λ§€κ°λ³μ(1.7.10)λ₯Ό κΈ°μ€μΌλ‘ μ€μ λ©λλ€. λ§€κ°λ³μκ° μλ΅λκ±°λ κ° onμΌλ‘ μ€μ λλ©΄ μ£Όμ΄μ§ μμΉμμ proxy_temp_path λͺ λ ΉμΌλ‘ μ€μ λ λλ ν°λ¦¬κ° μ¬μ©λ©λλ€. κ°μ΄ offλ‘ μ€μ λλ©΄ μμ νμΌμ΄ μΊμ λλ ν°λ¦¬μ μ§μ λ°°μΉλ©λλ€.
λν λͺ¨λ νμ± ν€ λ° λ°μ΄ν°μ λν μ 보λ 곡μ λ©λͺ¨λ¦¬ μμμ μ μ₯λ©λλ€. 곡μ λ©λͺ¨λ¦¬ μμμ μ΄λ¦ λ° ν¬κΈ°λ keys_zone λ§€κ°λ³μλ‘ κ΅¬μ±λ©λλ€. νλμ λ©κ°λ°μ΄νΈ μμμ μ½ 8μ² κ° ν€λ₯Ό μ μ₯ν μ μμ΅λλ€.
μμ μ© κ΅¬λ μ μΌλΆλ‘ 곡μ λ©λͺ¨λ¦¬ μμμ νμ₯λ μΊμ μ 보λ μ μ₯νλ―λ‘ λμΌν ν€ μμ λν΄ λ ν° μμ ν¬κΈ°λ₯Ό μ§μ ν΄μΌ ν©λλ€. μλ₯Ό λ€μ΄, νλμ λ©κ°λ°μ΄νΈ μμμ μ½ 4μ² κ° ν€λ₯Ό μ μ₯ν μ μμ΅λλ€.
inactive λ§€κ°λ³μλ‘ μ§μ λ μκ° λμ μ‘μΈμ€λμ§ μμ μΊμλ λ°μ΄ν°λ μ΅μ μ¬λΆμ κ΄κ³μμ΄ μΊμμμ μ κ±°λ©λλ€. κΈ°λ³Έμ μΌλ‘, λΉνμ±μ 10λΆμΌλ‘ μ€μ λ©λλ€.
νΉμν “μΊμ κ΄λ¦¬μ” νλ‘μΈμ€λ max_size λ§€κ°λ³μλ‘ μ€μ λ μ΅λ μΊμ ν¬κΈ°μ μΊμκ° ν¬ν¨λ νμΌ μμ€ν μ min_free(1.19.1) λ§€κ°λ³μλ‘ μ€μ λ μ΅μ μ¬μ© κ°λ₯ κ³΅κ° ν¬κΈ°λ₯Ό λͺ¨λν°λ§ν©λλ€. ν¬κΈ°κ° μ΄κ³Όλκ±°λ μΆ©λΆν μ¬μ© κ°λ₯ 곡κ°μ΄ μμΌλ©΄ κ°μ₯ μ΅κ·Όμ μ¬μ©ν λ°μ΄ν°λ₯Ό μ κ±°ν©λλ€. λ°μ΄ν°λ manager_files, manager_threshold λ° manager_sleep λ§€κ°λ³μ(1.11.5)λ‘ κ΅¬μ±λ λ°λ³΅μμ μ κ±°λ©λλ€. 1ν μ΄ν°λ μ΄μ μμλ manager_filesλ³΄λ€ μ μ μμ νλͺ©μ΄ μμ λ©λλ€(κΈ°λ³Έκ°: 100). ν λ² λ°λ³΅μ κΈ°κ°μ manager_threshold λ§€κ°λ³μλ‘ μ νλ©λλ€(κΈ°λ³Έμ μΌλ‘ 200λ°λ¦¬μ΄). λ°λ³΅ μ¬μ΄μ manager_sleep λ§€κ°λ³μλ‘ κ΅¬μ±λ μΌμ μ€μ§(κΈ°λ³Έμ μΌλ‘ 50λ°λ¦¬μ΄)κ° μ€νλ©λλ€.
μμ 1λΆ νμ νΉμν “μΊμ λ‘λ” νλ‘μΈμκ° μλν©λλ€. κ·Έλ¬λ©΄ νμΌ μμ€ν μ μ μ₯λ μ΄μ μ μΊμλ λ°μ΄ν°μ λν μ λ³΄κ° μΊμ μμμΌλ‘ λ‘λλ©λλ€. λ‘λ©λ λ°λ³΅μ μΌλ‘ μνλ©λλ€. 1ν μ΄ν°λ μ΄μ μμλ loader_filesλ³΄λ€ μ μ μμ νλͺ©μ΄ λ‘λλ©λλ€(κΈ°λ³Έκ°: 100). λν, ν λ²μ λ°λ³΅ κΈ°κ°μ loader_threshold λ§€κ°λ³μλ‘ μ νλ©λλ€(κΈ°λ³Έμ μΌλ‘ 200λ°λ¦¬μ΄). λ°λ³΅ μ¬μ΄μ loader_sleep λ§€κ°λ³μλ‘ κ΅¬μ±λ μΌμ μ€μ§(κΈ°λ³Έμ μΌλ‘ 50λ°λ¦¬μ΄)κ° μ€νλ©λλ€.
λν λ€μ λ§€κ°λ³μκ° μμ μ© κ΅¬λ μ μΌλΆλ‘ μ¬μ© κ°λ₯ν©λλ€.
purger=on|off
μμΌλμΉ΄λ ν€μ μΌμΉνλ μΊμ νλͺ©μ΄ μΊμ νΌμ (purger)(1.7.12)μ μν΄ λμ€ν¬μμ μ κ±°λ μ§λ₯Ό μ§μν©λλ€. λ§€κ°λ³μλ₯Ό on(κΈ°λ³Έκ°μ off)μΌλ‘ μ€μ νλ©΄ λͺ¨λ μΊμ νλͺ©μ ν΅ν΄ μꡬμ μΌλ‘ λ°λ³΅λκ³ μμΌλμΉ΄λ ν€μ μΌμΉνλ νλͺ©μ μμ νλ “μΊμ νΌμ ” νλ‘μΈμ€κ° μλν©λλ€.
purger_files=number
ν λ²μ λ°λ³΅ λμ μ€μΊλλ νλͺ© μλ₯Ό μ€μ ν©λλ€(1.7.12). κΈ°λ³Έμ μΌλ‘ purger_filesλ₯Ό 10μΌλ‘ μ€μ ν©λλ€.
purger_threshold=number
ν λ²μ λ°λ³΅ κΈ°κ°μ΄ μ€μ λ©λλ€(1.7.12). κΈ°λ³Έμ μΌλ‘ purger_thresholdλ 50λ°λ¦¬μ΄λ‘ μ€μ λ©λλ€.
purger_sleep=number
λ°λ³΅ μ¬μ΄μ μΌμ μ€μ§λ₯Ό μ€μ ν©λλ€(1.7.12). κΈ°λ³Έμ μΌλ‘ purger_sleepμ 50λ°λ¦¬μ΄λ‘ μ€μ λ©λλ€.
λ²μ 1.7.3, 1.7.7 λ° 1.11.10μμ μΊμ ν€λ νμμ΄ λ³κ²½λμμ΅λλ€. μ΄μ μ μΊμλ μλ΅μ μ΅μ nginx λ²μ μΌλ‘ μ κ·Έλ μ΄λ νμ μλͺ»λ κ²μΌλ‘ κ°μ£Όλ©λλ€.
Syntax: proxy_cache_purge string ...;
Default: β
Context: http, server, location
This directive appeared in version 1.5.7.
μμ²μ΄ μΊμ μ κ±° μμ²μΌλ‘ κ°μ£Όλλ 쑰건μ μ μν©λλ€. λ¬Έμμ΄ λ§€κ°λ³μμ νλ μ΄μμ κ°μ΄ λΉμ΄ μμ§ μκ³ “0”κ³Ό κ°μ§ μμΌλ©΄ ν΄λΉνλ μΊμ ν€κ° μλ μΊμ νλͺ©μ΄ μ κ±°λ©λλ€. μ±κ³΅μ μΈ μμ μ κ²°κ³Όλ 204(μ½ν μΈ μμ) μλ΅μ λ°ννμ¬ νμλ©λλ€.
μ κ±° μμ²μ μΊμ ν€κ° λ³ν(“*”)λ‘ λλλ κ²½μ° μμΌλ μΉ΄λ ν€μ μΌμΉνλ λͺ¨λ μΊμ νλͺ©μ΄ μΊμμμ μ κ±°λ©λλ€. κ·Έλ¬λ μ΄λ¬ν νλͺ©μ λΉνμ±μ μν΄ μμ λκ±°λ μΊμ νΌμ (1.7.12)μ μν΄ μ²λ¦¬λκ±°λ ν΄λΌμ΄μΈνΈκ° νλͺ©μ μ‘μΈμ€λ₯Ό μλν λκΉμ§ λμ€ν¬μ λ¨μ΅λλ€.
μμ ꡬμ±:
proxy_cache_path /data/nginx/cache keys_zone=cache_zone:10m;
map $request_method $purge_method {
PURGE 1;
default 0;
}
server {
...
location / {
proxy_pass http://backend;
proxy_cache cache_zone;
proxy_cache_key $uri;
proxy_cache_purge $purge_method;
}
}
μ΄ κΈ°λ₯μ μμ μ© κ΅¬λ μ μΌλΆλ‘ μ¬μ© κ°λ₯ν©λλ€.
Syntax: proxy_cache_revalidate on | off;
Default: proxy_cache_revalidate off;
Context: http, server, location
This directive appeared in version 1.5.7.
“If-Modified-Since” λ° “If-None-Match” ν€λ νλλ₯Ό ν¬ν¨νλ μ‘°κ±΄λΆ μμ²μ μ¬μ©νμ¬ λ§λ£λ μΊμ νλͺ©μ μ¬κ²μ¦μ νμ±νν©λλ€.
Syntax: proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 |
http_504 | http_403 | http_404 | http_429 | off ...;
Default: proxy_cache_use_stale off;
Context: http, server, location
νλ‘μ μ€μ λ μλ²μ ν΅μ νλ λμ μ€λλ μΊμλ μλ΅μ μ¬μ©ν μ μλ κ²½μ°λ₯Ό κ²°μ ν©λλ€. λͺ λ Ήμ λ§€κ°λ³μλ proxy_next_upstream λͺ λ Ήμ λ§€κ°λ³μμ μΌμΉν©λλ€.
error λ§€κ°λ³μλ μμ²μ μ²λ¦¬νλ νλ‘μ μ€μ λ μλ²λ₯Ό μ νν μ μλ κ²½μ° μ€λλ μΊμλ μλ΅μ μ¬μ©μ νμ©ν©λλ€.
λν, updating λ§€κ°λ³μλ νμ¬ μ λ°μ΄νΈλκ³ μλ κ²½μ° μ€λλ μΊμλ μλ΅μ μ¬μ©μ νμ©ν©λλ€. μ΄μ λ°λΌ μΊμλ λ°μ΄ν°λ₯Ό μ λ°μ΄νΈν λ νλ‘μ μ€μ λ μλ²μ λν μ‘μΈμ€ μκ° μ΅μνλ μ μμ΅λλ€.
μ€λλ μΊμλ μλ΅μ μ¬μ©μ μλ΅μ΄ μ€λλ ν(1.11.10) μ§μ λ μ΄ μ λμ μλ΅ ν€λμμ μ§μ νμ±νν μλ μμ΅λλ€. μ΄ λ°©μμ λͺ λ Ή λ§€κ°λ³μ μ¬μ©λ³΄λ€ μ°μ μμκ° λ¨μ΄μ§λλ€.
- “Cache-Control” ν€λ νλμ “stale-while-revalidate” νμ₯μ νμ¬ μ λ°μ΄νΈλκ³ μλ κ²½μ° μ€λλ μΊμλ μλ΅μ μ¬μ©μ νμ©ν©λλ€.
- “Cache-Control” ν€λ νλμ “stale-if-error” νμ₯μ μ€λ₯ λ°μ μ μ€λλ μΊμλ μλ΅μ μ¬μ©μ νμ©ν©λλ€.
μλ‘μ΄ μΊμ μμλ₯Ό μ±μΈ λ νλ‘μ μ€μ λ μλ²μ λν μ‘μΈμ€ μλ₯Ό μ΅μννλ €λ©΄ proxy_cache_lock λͺ λ Ήμ μ¬μ©ν μ μμ΅λλ€.
Syntax: proxy_cache_valid [code ...] time;
Default: β
Context: http, server, location
λ€λ₯Έ μλ΅ μ½λμ λν μΊμ± μκ°μ μ€μ ν©λλ€. μλ₯Ό λ€μ΄, λ€μ λͺ λ Ήμ
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
μ½λ 200 λ° 302κ° ν¬ν¨λ μλ΅μ λν΄ 10λΆμ μΊμ±μ μ€μ νκ³ μ½λ 404κ° ν¬ν¨λ μλ΅μ λν΄ 1λΆμ μΊμ±μ μ€μ ν©λλ€.
μΊμ± μκ°λ§ μ§μ λ κ²½μ°
proxy_cache_valid 5m;
200, 301, 302 μλ΅λ§ μΊμλ©λλ€.
λν any λ§€κ°λ³μλ λͺ¨λ μλ΅μ μΊμνκΈ° μν΄ μ§μ ν μ μμ΅λλ€.
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
μΊμ±μ λ§€κ°λ³μλ μλ΅ ν€λμμ μ§μ μ€μ ν μλ μμ΅λλ€. μ΄ λ°©μμ λͺ λ Ήμ μ¬μ©ν μΊμ± μκ° μ€μ λ³΄λ€ μ°μ μμκ° λμ΅λλ€.
- “X-Accel-Expires” ν€λ νλλ μλ΅μ μΊμ± μκ°μ μ΄ λ¨μλ‘ μ€μ ν©λλ€. 0 κ°μ μλ΅μ λν μΊμ±μ λΉνμ±νν©λλ€. κ°μ΄ @ μ λμ¬λ‘ μμνλ κ²½μ°, Epochκ° μμλκ³ κ²½κ³Όν μ λ μκ°(μ΄)μ μ€μ νλ©΄ κ·Έ μκ°κΉμ§ μλ΅μ μΊμ±ν μ μμ΅λλ€.
- ν€λμ “X-Accel-Expires” νλκ° ν¬ν¨λμ§ μμ κ²½μ° μΊμ±μ λ§€κ°λ³μλ ν€λ νλ “Expires” λλ “Cache-Control”μμ μ€μ ν μ μμ΅λλ€.
- ν€λμ “Set-Cookie” νλκ° ν¬ν¨λλ©΄ κ·Έλ¬ν μλ΅μ μΊμλμ§ μμ΅λλ€.
- ν€λμ νΉμ κ° “*”μ ν¨κ» “Vary” νλκ° ν¬ν¨λλ κ²½μ° κ·Έλ¬ν μλ΅μ μΊμλμ§ μμ΅λλ€(1.7.7). ν€λμ λ€λ₯Έ κ°κ³Ό ν¨κ» “Vary” νλκ° ν¬ν¨λ κ²½μ° κ·Έλ¬ν μλ΅μ ν΄λΉνλ μμ² ν€λ νλλ₯Ό κ³ λ €νμ¬ μΊμλ©λλ€(1.7.7).
Syntax: proxy_connect_timeout time;
Default: proxy_connect_timeout 60s;
Context: http, server, location
νλ‘μ μ€μ λ μλ²μμ μ°κ²°μ μ€μ νκΈ° μν μκ°μ νμ μ μν©λλ€. μ΄ μκ°μ νμ μΌλ°μ μΌλ‘ 75μ΄λ₯Ό μ΄κ³Όν μ μλ€λ μ μ μ λ ν΄μΌ ν©λλ€.
Syntax: proxy_cookie_domain off;
proxy_cookie_domain domain replacement;
Default: proxy_cookie_domain off;
Context: http, server, location
This directive appeared in version 1.1.15.
νλ‘μ μ€μ λ μλ² μλ΅μ “Set-Cookie” ν€λ νλμ domain νΉμ±μμ λ³κ²½λμ΄μΌ νλ ν μ€νΈλ₯Ό μ€μ ν©λλ€. νλ‘μ μ€μ λ μλ²κ° νΉμ± “domain=localhost”μ ν¨κ» “Set-Cookie” ν€λ νλλ₯Ό λ°ννλ€κ³ κ°μ ν©λλ€. λͺ λ Ήμ
proxy_cookie_domain localhost example.org;
“domain=example.org”λ‘ μ΄ νΉμ±μ λ€μ κΈ°λ‘ν©λλ€.
domain λ° replacement λ¬Έμμ΄ μμ μμΉμ μ κ³Ό domain νΉμ±μ 무μλ©λλ€. μΌμΉλ λμλ¬Έμλ₯Ό ꡬλΆνμ§ μμ΅λλ€.
domain λ° replacement λ¬Έμμ΄μ λ€μ λ³μλ₯Ό ν¬ν¨ν μ μμ΅λλ€.
proxy_cookie_domain www.$host $host;
λͺ λ Ήμ μ κ·μμ μ¬μ©νμ¬ μ§μ ν μλ μμ΅λλ€. μ΄ κ²½μ°, domain μ “~” κΈ°νΈμμ μμν΄μΌ ν©λλ€. μ κ·μμ μ΄λ¦ μ§μ λ μΊ‘μ² λ° μμΉ μΊ‘μ²λ₯Ό ν¬ν¨ν μ μκ³ replacementλ μ΄λ¬ν μΊ‘μ²λ₯Ό μ°Έμ‘°ν μ μμ΅λλ€.
proxy_cookie_domain ~\.(?P<sl_domain>[-0-9a-z]+\.[a-z]+)$ $sl_domain;
μ¬λ¬ proxy_cookie_domain λͺ λ Ήμ λμΌν μμ€μμ μ§μ ν μ μμ΅λλ€.
proxy_cookie_domain localhost example.org;
proxy_cookie_domain ~\.([a-z]+\.[a-z]+)$ $1;
μ¬λ¬ λͺ λ Ήμ μΏ ν€μ μ μ©ν μ μλ κ²½μ° μ²« λ²μ§Έ μΌμΉ λͺ λ Ήμ΄ μ νλ©λλ€.
off λ§€κ°λ³μλ μ΄μ κ΅¬μ± μμ€μμ μμλ proxy_cookie_domain λͺ λ Ήμ ν¨κ³Όλ₯Ό μ·¨μν©λλ€.
Syntax: proxy_cookie_flags off | cookie [flag ...];
Default: proxy_cookie_flags off;
Context: http, server, location
This directive appeared in version 1.19.3.
μΏ ν€μ λν΄ νλ μ΄μμ νλκ·Έλ₯Ό μ€μ ν©λλ€. μΏ ν€λ ν μ€νΈ, λ³μ λ° κ·Έ μ‘°ν©μ ν¬ν¨ν μ μμ΅λλ€. νλκ·Έλ ν μ€νΈ, λ³μ λ° κ·Έ μ‘°ν©μ ν¬ν¨ν μ μμ΅λλ€(1.19.8). secure, httponly, samesite=strict, samesite=lax, samesite=none λ§€κ°λ³μλ κ΅¬μ± νλκ·Έλ₯Ό μΆκ°ν©λλ€. nosecure, nohttponly, nosamesite λ§€κ°λ³μλ ν΄λΉνλ νλκ·Έλ₯Ό μ κ±°ν©λλ€.
μΏ ν€λ μ κ·μμ μ¬μ©νμ¬ μ§μ ν μλ μμ΅λλ€. μ΄ κ²½μ°, cookieλ “~” κΈ°νΈμμ μμν΄μΌ ν©λλ€.
μ¬λ¬ proxy_cookie_flags λͺ λ Ήμ λμΌν κ΅¬μ± μμ€μμ μ§μ ν μ μμ΅λλ€.
proxy_cookie_flags one httponly;
proxy_cookie_flags ~ nosecure samesite=strict;
μ¬λ¬ λͺ λ Ήμ μΏ ν€μ μ μ©ν μ μλ κ²½μ° μ²« λ²μ§Έ μΌμΉ λͺ λ Ήμ΄ μ νλ©λλ€. μμμ httponly νλκ·Έλ μΏ ν€ oneμ μΆκ°λ©λλ€. λ€λ₯Έ λͺ¨λ μΏ ν€μ κ²½μ° samesite=strict νλκ·Έκ° μΆκ°λκ³ secure νλκ·Έκ° μμ λ©λλ€.
off λ§€κ°λ³μλ μ΄μ κ΅¬μ± μμ€μμ μμλ proxy_cookie_flags λͺ λ Ήμ ν¨κ³Όλ₯Ό μ·¨μν©λλ€.
Syntax: proxy_cookie_path off;
proxy_cookie_path path replacement;
Default: proxy_cookie_path off;
Context: http, server, location
This directive appeared in version 1.1.15.
νλ‘μ μ€μ λ μλ² μλ΅μ “Set-Cookie” ν€λ νλμ path νΉμ±μμ λ³κ²½λμ΄μΌ νλ ν μ€νΈλ₯Ό μ€μ ν©λλ€. νλ‘μ μ€μ λ μλ²κ° νΉμ± “path=/two/some/uri/”μ ν¨κ» “Set-Cookie” ν€λ νλλ₯Ό λ°ννλ€κ³ κ°μ ν©λλ€. λͺ λ Ήμ
proxy_cookie_path /two/ /;
“path=/some/uri/”λ‘ μ΄ μμ±μ λ€μ μμ±ν©λλ€.
path λ° replacement λ¬Έμμ΄μ λ€μ λ³μλ₯Ό ν¬ν¨ν μ μμ΅λλ€.
proxy_cookie_path $uri /some$uri;
λͺ λ Ήμ μ κ·μμ μ¬μ©νμ¬ μ§μ ν μλ μμ΅λλ€. μ΄ κ²½μ°, pathλ λμλ¬Έμλ₯Ό ꡬλΆνλ μΌμΉμ κ²½μ° “~” κΈ°νΈμμ μμνκ³ λλ λμλ¬Έμλ₯Ό ꡬλΆνμ§ μλ μΌμΉμ κ²½μ° “~*” κΈ°νΈμμ μμν΄μΌ ν©λλ€. μ κ·μμ μ΄λ¦ μ§μ λ μΊ‘μ² λ° μμΉ μΊ‘μ²λ₯Ό ν¬ν¨ν μ μκ³ replacementλ μ΄λ¬ν μΊ‘μ²λ₯Ό μ°Έμ‘°ν μ μμ΅λλ€.
proxy_cookie_path ~*^/user/([^/]+) /u/$1;
μ¬λ¬ proxy_cookie_path λͺ λ Ήμ λμΌν μμ€μμ μ§μ ν μ μμ΅λλ€.
proxy_cookie_path /one/ /;
proxy_cookie_path / /two/;
μ¬λ¬ λͺ λ Ήμ μΏ ν€μ μ μ©ν μ μλ κ²½μ° μ²« λ²μ§Έ μΌμΉ λͺ λ Ήμ΄ μ νλ©λλ€.
off λ§€κ°λ³μλ μ΄μ κ΅¬μ± μμ€μμ μμλ proxy_cookie_path λͺ λ Ήμ ν¨κ³Όλ₯Ό μ·¨μν©λλ€.
Syntax: proxy_force_ranges on | off;
Default: proxy_force_ranges off;
Context: http, server, location
This directive appeared in version 1.7.7.
μ΄λ¬ν μλ΅μ “Accept-Ranges” νλμ κ΄κ³μμ΄ νλ‘μ μ€μ λ μλ²λ‘λΆν°μ μΊμλ μλ΅κ³Ό μΊμλμ§ μμ μλ΅ λͺ¨λμ λν΄ λ°μ΄νΈ λ²μ μ§μμ νμ±νν©λλ€.
Syntax: proxy_headers_hash_bucket_size size;
Default: proxy_headers_hash_bucket_size 64;
Context: http, server, location
proxy_hide_header λ° proxy_set_header λͺ λ Ήμ΄ μ¬μ©νλ ν΄μ ν μ΄λΈμ λν΄ λ²ν· ν¬κΈ°λ₯Ό μ€μ ν©λλ€. ν΄μ ν μ΄λΈμ μ€μ νλ μΈλΆ μ 보λ λ³λμ λ¬Έμμμ μ 곡ν©λλ€.
Syntax: proxy_headers_hash_max_size size;
Default: proxy_headers_hash_max_size 512;
Context: http, server, location
Syntax: proxy_hide_header field;
Default: β
Context: http, server, location
κΈ°λ³Έμ μΌλ‘ nginxλ νλ‘μ μ€μ λ μλ²μ μλ΅μμ ν΄λΌμ΄μΈνΈλ‘ ν€λ νλ “Date”, “Server”, “X-Pad” λ° “X-Accel-…”μ μ λ¬νμ§ μμ΅λλ€. proxy_hide_header λͺ λ Ήμ μ λ¬λμ§ μλ μΆκ° νλλ₯Ό μ€μ ν©λλ€. λ°λλ‘ νλ μ λ¬μ νμ©ν΄μΌ νλ κ²½μ° proxy_pass_header λͺ λ Ήμ μ¬μ©ν μ μμ΅λλ€.
Syntax: proxy_http_version 1.0 | 1.1;
Default: proxy_http_version 1.0;
Context: http, server, location
This directive appeared in version 1.1.4.
νλ‘μ μ€μ μ μν HTTP νλ‘ν μ½ λ²μ μ μ€μ ν©λλ€. κΈ°λ³Έμ μΌλ‘ λ²μ 1.0μ΄ μ¬μ©λ©λλ€. λ²μ 1.1μ keepalive μ°κ²° λ° NTLM μΈμ¦κ³Ό ν¨κ» μ¬μ©νλ κ²μ΄ μ’μ΅λλ€.
Syntax: proxy_ignore_client_abort on | off;
Default: proxy_ignore_client_abort off;
Context: http, server, location
Syntax: proxy_ignore_headers field ...;
Default: β
Context: http, server, location
νλ‘μ μ€μ λ μλ²μ νΉμ ν μλ΅ ν€λ νλ μ²λ¦¬λ₯Ό λΉνμ±νν©λλ€. λ€μ νλλ 무μν μ μμ΅λλ€. “X-Accel-Redirect”, “X-Accel-Expires”, “X-Accel-Limit-Rate”(1.1.6), “X-Accel-Buffering”(1.1.6), “X-Accel-Charset”(1.1.6), “Expires”, “Cache-Control”, “Set-Cookie”(0.8.44) λ° “Vary”(1.7.7).
λΉνμ±νλμ§ μμΌλ©΄ μ΄λ¬ν ν€λ νλλ₯Ό μ²λ¦¬ν κ²½μ° λ€μκ³Ό κ°μ ν¨κ³Όκ° μμ΅λλ€.
- “X-Accel-Expires”, “Expires”, “Cache-Control”, “Set-Cookie” λ° “Vary”λ μλ΅ μΊμ±μ λ§€κ°λ³μλ₯Ό μ€μ ν©λλ€.
- “X-Accel-Redirect”λ μ§μ λ URIμ λν λ΄λΆ 리λλ μ μ μνν©λλ€.
- “X-Accel-Limit-Rate”λ ν΄λΌμ΄μΈνΈμ λν μλ΅ μ μ‘μ μν΄ μλ μ νμ μ€μ ν©λλ€.
- “X-Accel-Buffering”μ μλ΅μ λ²νΌλ§μ νμ±ννκ±°λ λΉνμ±νν©λλ€.
- “X-Accel-Charset”μ μλ΅μ μνλ charsetμ μ€μ ν©λλ€.
Syntax: proxy_intercept_errors on | off;
Default: proxy_intercept_errors off;
Context: http, server, location
μ½λκ° 300λ³΄λ€ ν¬κ±°λ κ°μ νλ‘μ μ€μ λ μλ² μλ΅μ΄ ν΄λΌμ΄μΈνΈμ μ λ¬λμ΄μΌ νλμ§ μλλ©΄ error_page λͺ λ ΉμΌλ‘ μ²λ¦¬νκΈ° μν΄ κ°λ‘μ±μ nginxλ‘ λ¦¬λλ μ ν΄μΌ νλμ§ κ²°μ ν©λλ€.
Syntax: proxy_limit_rate rate;
Default: proxy_limit_rate 0;
Context: http, server, location
This directive appeared in version 1.7.7.
Syntax: proxy_max_temp_file_size size;
Default: proxy_max_temp_file_size 1024m;
Context: http, server, location
νλ‘μ μ€μ λ μλ²μμμ μλ΅ λ²νΌλ§μ΄ νμ±νλκ³ μ 체 μλ΅μ΄ proxy_buffer_size λ° proxy_buffers λͺ λ ΉμΌλ‘ μ€μ λ λ²νΌμ λ§μ§ μμΌλ©΄ μλ΅μ μΌλΆκ° μμ νμΌλ‘ μ μ₯λ μ μμ΅λλ€. μ΄ λͺ λ Ήμ μμ νμΌμ μ΅λ ν¬κΈ°λ₯Ό μ€μ ν©λλ€. ν λ²μ μμ νμΌμ κΈ°λ‘λλ λ°μ΄ν°μ ν¬κΈ°λ proxy_temp_file_write_size λͺ λ ΉμΌλ‘ μ€μ λ©λλ€.
0 κ°μ μμ νμΌμ λν μλ΅μ λ²νΌλ§μ λΉνμ±νν©λλ€.
μ΄ μ νμ μΊμλκ±°λ λμ€ν¬μ μ μ₯λ μλ΅μλ μ μ©λμ§ μμ΅λλ€.
Syntax: proxy_method method;
Default: β
Context: http, server, location
Syntax: proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 |
http_403 | http_404 | http_429 | non_idempotent | off ...;
Default: proxy_next_upstream error timeout;
Context: http, server, location
μμ²μ΄ λ€μ μλ²μ μ λ¬λμ΄μΌ νλ κ²½μ°λ₯Ό μ§μ ν©λλ€.
error
μλ²μμ μ°κ²°μ μ€μ νκ³ μμ²μ μλ²μ μ λ¬νκ±°λ μλ΅ ν€λλ₯Ό μ½λ λμ μ€λ₯ λ°μ
timeout
μλ²μμ μ°κ²°μ μ€μ νκ³ μμ²μ μλ²μ μ λ¬νκ±°λ μλ΅ ν€λλ₯Ό μ½λ λμ μκ°μ ν λ°μ
invalid_header
μλ²κ° λΉμ΄ μκ±°λ μλͺ»λ μλ΅μ λ°νν¨
http_500
μλ²κ° μ½λ 500κ³Ό ν¨κ» μλ΅μ λ°νν¨
http_502
μλ²κ° μ½λ 502μ ν¨κ» μλ΅μ λ°νν¨
http_503
μλ²κ° μ½λ 503κ³Ό ν¨κ» μλ΅μ λ°νν¨
http_504
μλ²κ° μ½λ 504μ ν¨κ» μλ΅μ λ°νν¨
http_403
μλ²κ° μ½λ 403κ³Ό ν¨κ» μλ΅μ λ°νν¨
http_404
μλ²κ° μ½λ 404μ ν¨κ» μλ΅μ λ°νν¨
http_429
μλ²κ° μ½λ 429(1.11.13)μ ν¨κ» μλ΅μ λ°νν¨
non_idempotent
μΌλ°μ μΌλ‘ non-idempotent λ©μλ(POST, LOCK, PATCH)λ₯Ό ν¬ν¨νλ μμ²μ μμ²μ΄ μ μ€νΈλ¦Ό μλ²(1.9.13)λ‘ μ μ‘λ κ²½μ° λ€μ μλ²μ μ λ¬λμ§ μμ΅λλ€. μ΄ μ΅μ μ νμ±ννλ©΄ κ·Έλ¬ν μμ²μ μ¬μλκ° λͺ μμ μΌλ‘ νμ©λ©λλ€.
off
λ€μ μλ²λ‘μ μμ² μ λ¬μ΄ λΉνμ±νλ©λλ€.
λ€μ μλ²λ‘μ μμ² μ λ¬μ μμ§ ν΄λΌμ΄μΈνΈμ μ무κ²λ μ μ‘λμ§ μμ κ²½μ°μλ§ κ°λ₯ν©λλ€. μ¦, μλ΅ μ μ‘ μ€μ μ€λ₯ λλ μκ°μ νμ΄ λ°μνλ κ²½μ° μ΄λ₯Ό μμ νλ κ²μ λΆκ°λ₯ν©λλ€.
μμ²μ λ€μ μλ²λ‘ μ λ¬νλ κ²μ μλ μ λ° μκ°μ μν΄ μ νλ μ μμ΅λλ€.
Syntax: proxy_next_upstream_timeout time;
Default: proxy_next_upstream_timeout 0;
Context: http, server, location
This directive appeared in version 1.7.5.
Syntax: proxy_next_upstream_tries number;
Default: proxy_next_upstream_tries 0;
Context: http, server, location
This directive appeared in version 1.7.5.
μμ²μ λ€μ μλ²λ‘ μ λ¬ν μ μλ κ°λ₯ν μλ μλ₯Ό μ νν©λλ€. 0 κ°μ μ΄ μ νμ ν΄μ ν©λλ€.
Syntax: proxy_no_cache string ...;
Default: β
Context: http, server, location
μλ΅μ΄ μΊμμ μ μ₯λμ§ μλ 쑰건μ μ μν©λλ€. λ¬Έμμ΄ λ§€κ°λ³μμ νλ μ΄μμ κ°μ΄ λΉμ΄ μμ§ μκ³ “0”κ³Ό κ°μ§ μμΌλ©΄ μλ΅μ΄ μ μ₯λμ§ μμ΅λλ€.
proxy_no_cache $cookie_nocache $arg_nocache$arg_comment;
proxy_no_cache $http_pragma $http_authorization;
Syntax: proxy_pass URL;
Default: β
Context: location, if in location, limit_except
νλ‘μ μ€μ λ μλ²μ νλ‘ν μ½ λ° μ£Όμμ μμΉκ° λ§€νλμ΄μΌ νλ URI μ΅μ μ μ€μ ν©λλ€. νλ‘ν μ½λ‘, “http” λλ “https”λ₯Ό μ§μ ν μ μμ΅λλ€. μ£Όμλ λλ©μΈ μ΄λ¦ λλ IP μ£Όμ λ° ν¬νΈ μ΅μ μΌλ‘ μ§μ ν μ μμ΅λλ€.
proxy_pass http://localhost:8000/uri/;
λ¨μ΄ “unix” λ€μ μ§μ λκ³ μ½λ‘ μΌλ‘ λλ¬μΈμΈ UNIX-λλ©μΈ μμΌ κ²½λ‘λ‘ μ§μ ν μ μμ΅λλ€.
proxy_pass http://unix:/tmp/backend.socket:/uri/;
λλ©μΈ μ΄λ¦μ΄ μ¬λ¬ μ£Όμλ‘ νμΈλλ©΄ ν΄λΉνλ λͺ¨λ μ£Όμλ λΌμ΄λ λ‘λΉ λ°©μμΌλ‘ μ¬μ©λ©λλ€. λν, μ£Όμλ μλ² κ·Έλ£ΉμΌλ‘ μ§μ ν μ μμ΅λλ€.
λ§€κ°λ³μ κ°μλ λ³μκ° ν¬ν¨λ μ μμ΅λλ€. μ΄ κ²½μ° μ£Όμκ° λλ©μΈ μ΄λ¦μΌλ‘ μ§μ λλ©΄ μ΄λ¦μ μ€λͺ λ μλ² κ·Έλ£Ή μ€μμ κ²μλκ³ μλ κ²½μ° resolverλ₯Ό μ¬μ©νμ¬ κ²°μ λ©λλ€.
μμ² URIλ λ€μκ³Ό κ°μ΄ μλ²λ‘ μ λ¬λ©λλ€.
- proxy_pass λͺ λ Ήμ΄ URIλ‘ μ§μ λλ©΄ μμ²μ΄ μλ²μ μ λ¬λ λ μμΉμ μΌμΉνλ μ κ·νλ μμ² URIμ μΌλΆλ λͺ λ Ήμ μ§μ λ URIλ‘ λ체λ©λλ€.
location /name/ {
proxy_pass http://127.0.0.1/remote/;
}
- proxy_passκ° URI μμ΄ μ§μ λλ κ²½μ° μμ² URIλ μλ μμ²μ΄ μ²λ¦¬λ λ ν΄λΌμ΄μΈνΈμμ λ³΄λΈ κ²κ³Ό λμΌν νμμΌλ‘ μλ²μ μ λ¬λκ±°λ λ³κ²½λ URIλ₯Ό μ²λ¦¬ν λ μ 체 μ κ·νλ μμ² URIκ° μ λ¬λ©λλ€.
location /some/path/ {
proxy_pass http://127.0.0.1;
}
λ²μ 1.1.12 μ΄μ μ proxy_passκ° URI μμ΄ μ§μ λλ©΄ μλ μμ² URIλ μΌλΆ κ²½μ°μ λ³κ²½λ URI λμ μ λ¬λ μ μμ΅λλ€.
μΌλΆ κ²½μ°μ, κ΅μ²΄ν μμ² URIμ λΆλΆμ κ²°μ ν μ μμ΅λλ€.
- μ κ·μμ μ¬μ©νκ³ μ΄λ¦ μ§μ λ μμΉ λ΄μμλ μμΉκ° μ§μ λ κ²½μ°.
μ΄λ¬ν κ²½μ°, proxy_passλ URI μμ΄ μ§μ ν΄μΌ ν©λλ€.
- URIκ° rewrite λͺ λ Ήμ μ¬μ©νμ¬ νλ‘μ μ€μ λ μμΉ λ΄λΆμμ λ³κ²½λ κ²½μ° μ΄ λμΌν ꡬμ±μ΄ μμ²(break)μ μ²λ¦¬νλ λ° μ¬μ©λ©λλ€.
location /name/ {
rewrite /name/([^/]+) /users?name=$1 break;
proxy_pass http://127.0.0.1;
}
μ΄ κ²½μ° λͺ λ Ήμμ μ§μ λ URIλ 무μλκ³ μ 체 λ³κ²½λ μμ² URIκ° μλ²μ μ λ¬λ©λλ€.
- λ³μκ° proxy_passμμ μ¬μ©λ κ²½μ°:
location /name/ {
proxy_pass http://127.0.0.1$request_uri;
}
μ΄ κ²½μ°, URIκ° λͺ λ Ήμμ μ§μ λλ©΄ κ·Έλλ‘ μλ²μ μ λ¬λμ΄ μλ μμ² URIλ₯Ό κ΅μ²΄ν©λλ€.
Syntax: proxy_pass_header field;
Default: β
Context: http, server, location
νλ‘μ μ€μ λ μλ²μμ ν΄λΌμ΄μΈνΈλ‘ λ€λ₯Έ λ°©μμΌλ‘ λΉνμ±νλ ν€λ νλμ μ λ¬μ νμ©ν©λλ€.
Syntax: proxy_pass_request_body on | off;
Default: proxy_pass_request_body on;
Context: http, server, location
μλ μμ² λ³Έλ¬Έμ΄ νλ‘μ μ€μ λ μλ²λ‘ μ λ¬λλμ§λ₯Ό λνλ λλ€.
location /x-accel-redirect-here/ {
proxy_method GET;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_pass ...
}
Syntax: proxy_pass_request_headers on | off;
Default: proxy_pass_request_headers on;
Context: http, server, location
μλ μμ²μ ν€λ νλκ° νλ‘μ μ€μ λ μλ²λ‘ μ λ¬λλμ§ λνλ λλ€.
location /x-accel-redirect-here/ {
proxy_method GET;
proxy_pass_request_headers off;
proxy_pass_request_body off;
proxy_pass ...
}
Syntax: proxy_read_timeout time;
Default: proxy_read_timeout 60s;
Context: http, server, location
νλ‘μ μ€μ λ μλ²μμ μλ΅μ μ½κΈ° μν μκ°μ νμ μ μν©λλ€. μκ°μ νμ μ 체 μλ΅μ μ μ‘μ λν΄μκ° μλλΌ 2κ°μ μ°μμ μΈ μ½κΈ° μμ μ¬μ΄μμλ§ μ€μ λ©λλ€. νλ‘μ μ€μ λ μλ²κ° μ΄ μκ° λ΄μ μ무κ²λ μ μ‘νμ§ μμΌλ©΄ μ°κ²°μ΄ λ«νλλ€.
Syntax: proxy_redirect default;
proxy_redirect off;
proxy_redirect redirect replacement;
Default:
proxy_redirect default;
Context: http, server, location
νλ‘μ μ€μ λ μλ² μλ΅μ “Location” λ° “Refresh” ν€λ νλμμ λ³κ²½λμ΄μΌ νλ ν μ€νΈλ₯Ό μ€μ ν©λλ€. νλ‘μ μ€μ λ μλ²κ° ν€λ νλ “μμΉ: http://localhost:8000/two/some/uri/”λ₯Ό λ°ννλ€κ³ κ°μ ν©λλ€. λͺ λ Ήμ
proxy_redirect http://localhost:8000/two/ http://frontend/one/;
“Location: http://frontend/one/some/uri/”λ‘ μ΄ λ¬Έμμ΄μ λ€μ κΈ°λ‘ν©λλ€.
μλ² μ΄λ¦μ κ΅μ²΄ λ¬Έμμ΄μμ μλ΅λ μ μμ΅λλ€.
proxy_redirect http://localhost:8000/two/ /;
κ·Έλ¬λ©΄ 80κ³Ό λ€λ₯Ό κ²½μ° κΈ°λ³Έ μλ²μ μ΄λ¦ λ° ν¬νΈκ° μ½μ λ©λλ€.
default λ§€κ°λ³μμμ μ§μ λ κΈ°λ³Έ κ΅μ²΄λ μμΉ λ° proxy_pass λͺ λ Ήμ λ§€κ°λ³μλ₯Ό μ¬μ©ν©λλ€. κ·Έλ¬λ―λ‘ μλμ 2κ° κ΅¬μ±μ λ±κ°μ λλ€.
location /one/ {
proxy_pass http://upstream:port/two/;
proxy_redirect default;
location /one/ {
proxy_pass http://upstream:port/two/;
proxy_redirect http://upstream:port/two/ /one/;
proxy_passκ° λ³μλ₯Ό μ¬μ©νμ¬ μ§μ λ κ²½μ° default λ§€κ°λ³μλ νμ©λμ§ μμ΅λλ€.
replacement λ¬Έμμ΄μ λ³μλ₯Ό ν¬ν¨ν μ μμ΅λλ€.
proxy_redirect http://localhost:8000/ http://$host:$server_port/;
redirectλ (1.1.11) λ³μλ ν¬ν¨ν μ μμ΅λλ€.
proxy_redirect http://$proxy_host:8000/ /;
λͺ λ Ήμ μ κ·μμ μ¬μ©νμ¬ μ§μ ν μ μμ΅λλ€(1.1.11). μ΄ κ²½μ°, redirectλ λμλ¬Έμλ₯Ό ꡬλΆνλ μΌμΉμ κ²½μ° “~” κΈ°νΈλ‘ μμνκ³ λλ λμλ¬Έμλ₯Ό ꡬλΆνμ§ μλ μΌμΉμ κ²½μ° “~*” κΈ°νΈλ‘ μμν΄μΌ ν©λλ€. μ κ·μμ μ΄λ¦ μ§μ λ μΊ‘μ² λ° μμΉ μΊ‘μ²λ₯Ό ν¬ν¨ν μ μκ³ replacementλ μ΄λ¬ν μΊ‘μ²λ₯Ό μ°Έμ‘°ν μ μμ΅λλ€.
proxy_redirect ~^(http://[^:]+):\d+(/.+)$ $1$2;
proxy_redirect ~*/user/([^/]+)/(.+)$ http://$1.example.com/$2;
μ¬λ¬ proxy_redirect λͺ λ Ήμ λμΌν μμ€μμ μ§μ ν μ μμ΅λλ€.
proxy_redirect default;
proxy_redirect http://localhost:8000/ /;
proxy_redirect http://www.example.com/ /;
μ¬λ¬ λͺ λ Ήμ νλ‘μ μ€μ λ μλ² μλ΅μ ν€λ νλμ μ μ©ν μ μλ κ²½μ° μ²« λ²μ§Έ μΌμΉ λͺ λ Ήμ΄ μ νλ©λλ€.
off λ§€κ°λ³μλ μ΄μ κ΅¬μ± μμ€μμ μμλ proxy_redirect λͺ λ Ήμ ν¨κ³Όλ₯Ό μ·¨μν©λλ€.
μ΄ λͺ λ Ήμ μ¬μ©νμ¬ νλ‘μ μ€μ λ μλ²μμ λ°κΈν μλ 리λλ μ μ νΈμ€νΈ μ΄λ¦μ μΆκ°νλ κ²λ κ°λ₯ν©λλ€.
proxy_redirect / /;
Syntax: proxy_request_buffering on | off;
Default: proxy_request_buffering on;
Context: http, server, location
This directive appeared in version 1.7.11.
ν΄λΌμ΄μΈνΈ μμ² λ³Έλ¬Έμ λ²νΌλ§μ νμ±ννκ±°λ λΉνμ±νν©λλ€.
λ²νΌλ§μ΄ νμ±νλλ©΄ μμ²μ νλ‘μ μ€μ λ μλ²μ 보λ΄κΈ° μ μ μ 체 μμ² λ³Έλ¬Έμ΄ ν΄λΌμ΄μΈνΈμμ μ½νλλ€.
λ²νΌλ§μ΄ λΉνμ±νλλ©΄ μμ² λ³Έλ¬Έμ΄ μμ λμλ§μ μ¦μ νλ‘μ μ€μ λ μλ²λ‘ μ μ‘λ©λλ€. μ΄ κ²½μ° μμ²μ nginxκ° μ΄λ―Έ μμ² λ³Έλ¬Έμ μ μ‘μ μμν κ²½μ° λ€μ μλ²λ‘ μ λ¬λ μ μμ΅λλ€.
HTTP/1.1 μ²ν¬ λΆν μ μ‘ μΈμ½λ©μ΄ μλ μμ² λ³Έλ¬Έμ μ μ‘νλ λ° μ¬μ©λλ©΄ μμ² λ³Έλ¬Έμ HTTP/1.1μ΄ νλ‘μ μ¬μ©μ μν΄ νμ±νλμ§ μλ ν λͺ λ Ή κ°μ κ΄κ³μμ΄ λ²νΌλ§λ©λλ€.
Syntax: proxy_send_lowat size;
Default: proxy_send_lowat 0;
Context: http, server, location
λͺ λ Ήμ΄ 0μ΄ μλ κ°μΌλ‘ μ€μ λλ©΄ nginxλ kqueue λ©μλμ NOTE_LOWAT νλκ·Έ λλ μ§μ λ ν¬κΈ°μ SO_SNDLOWAT μμΌ μ΅μ μ μ¬μ©νμ¬ νλ‘μ μ€μ λ μλ²λ‘ λκ°λ μ°κ²°μμ μ μ‘ μμ μλ₯Ό μ΅μννλ € ν©λλ€.
Syntax: proxy_send_timeout time;
Default: proxy_send_timeout 60s;
Context: http, server, location
μμ²μ νλ‘μ μ€μ λ μλ²λ‘ μ μ‘νλ λ° λν μκ°μ νμ μ€μ ν©λλ€. μκ°μ νμ μ 체 μμ²μ μ μ‘μ λν΄μκ° μλλΌ 2κ°μ μ°μμ μΈ μ°κΈ° μμ μ¬μ΄μμλ§ μ€μ λ©λλ€. νλ‘μ μ€μ λ μλ²κ° μ΄ μκ° λ΄μ μ무κ²λ μμ νμ§ μμΌλ©΄ μ°κ²°μ΄ λ«νλλ€.
Syntax: proxy_set_body value;
Default: β
Context: http, server, location
Syntax: proxy_set_header field value;
Default: proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
Context: http, server, location
νλ‘μ μ€μ λ μλ²μ μ λ¬λ μμ² ν€λλ₯Ό μ¬μ μνκ±°λ κ·Έλ¬ν μμ² ν€λμ νλλ₯Ό μΆκ°νλλ‘ νμ©ν©λλ€. κ°μ ν μ€νΈ, λ³μ λ° κ·Έ μ‘°ν©μ ν¬ν¨ν μ μμ΅λλ€. μ΄λ¬ν λͺ λ Ήμ νμ¬ μμ€μμ μ μλ proxy_set_header λͺ λ Ήμ΄ μλ κ²½μ°μλ§ μ΄μ κ΅¬μ± μμ€μμ μμλ©λλ€. κΈ°λ³Έμ μΌλ‘ λ¨ 2κ° νλλ§ μ¬μ μλ©λλ€.
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
μΊμ±μ΄ νμ±νλλ©΄ μλ μμ²μ ν€λ νλ “If-Modified-Since”, “If-Unmodified-Since”, “If-None-Match”, “If-Match”, “Range” λ° “If-Range”κ° νλ‘μ μ€μ λ μλ²λ‘ μ λ¬λμ§ μμ΅λλ€.
λ³κ²½λμ§ μμ “Host” μμ² ν€λ νλλ λ€μκ³Ό κ°μ΄ μ λ¬ν μ μμ΅λλ€.
proxy_set_header Host $http_host;
κ·Έλ¬λ μ΄ νλκ° ν΄λΌμ΄μΈνΈ μμ² ν€λμ μμΌλ©΄ μ무κ²λ μ λ¬λμ§ μμ΅λλ€. κ·Έλ¬ν κ²½μ° $host λ³μλ₯Ό μ¬μ©νλ κ²μ΄ μ’κ³ ν΄λΉ κ°μ “Host” μμ² ν€λ νλμ μλ² μ΄λ¦ λλ μ΄ νλκ° μλ κ²½μ° κΈ°λ³Έ μλ² μ΄λ¦κ³Ό λμΌν©λλ€.
proxy_set_header Host $host;
λν μλ² μ΄λ¦μ νλ‘μ μ€μ λ μλ²μ ν¬νΈμ ν¨κ» μ λ¬λ μ μμ΅λλ€.
proxy_set_header Host $host:$proxy_port;
ν€λ νλμ κ°μ΄ λΉμ΄ μλ λ¬Έμμ΄μ΄λ©΄ μ΄ νλλ νλ‘μ μ€μ λ μλ²λ‘ μ λ¬λμ§ μμ΅λλ€.
proxy_set_header Accept-Encoding "";
Syntax: proxy_socket_keepalive on | off;
Default: proxy_socket_keepalive off;
Context: http, server, location
This directive appeared in version 1.15.6.
νλ‘μλ μλ²λ‘ λκ°λ μ°κ²°μ λν “TCP keepalive” λμμ ꡬμ±ν©λλ€. κΈ°λ³Έμ μΌλ‘ μ΄μ 체μ μ μ€μ μ μμΌμ λν΄ μ ν¨ν©λλ€. λͺ λ Ήμμ “on” κ°μ μ€μ νλ©΄ ν΄λΉ μμΌμ λν΄ SO_KEEPALIVE μ΅μ μ΄ νμ±νλ©λλ€.
Syntax: proxy_ssl_certificate file;
Default: β
Context: http, server, location
This directive appeared in version 1.7.8.
νλ‘μ μ€μ λ HTTPS μλ²μ λν μΈμ¦μ μ¬μ©λ PEM νμμ μΈμ¦μλ‘ νμΌμ μ§μ ν©λλ€.
λ²μ 1.21.0 μ΄ν λ³μλ₯Ό νμΌ μ΄λ¦μ μ¬μ©ν μ μμ΅λλ€.
Syntax: proxy_ssl_certificate_key file;
Default: β
Context: http, server, location
This directive appeared in version 1.7.8.
νλ‘μ μ€μ λ HTTPS μλ²μ λν μΈμ¦μ μ¬μ©λ PEM νμμ λΉλ° ν€λ‘ νμΌμ μ§μ ν©λλ€.
κ° engine:name:idλ νμΌ(1.7.9) λμ μ§μ λ μ μκ³ μ΄κ²μ OpenSSL engine μ΄λ¦μμ μ§μ λ idλ‘ λΉλ° ν€λ₯Ό λ‘λν©λλ€.
λ²μ 1.21.0 μ΄ν λ³μλ₯Ό νμΌ μ΄λ¦μ μ¬μ©ν μ μμ΅λλ€.
Syntax: proxy_ssl_ciphers ciphers;
Default: proxy_ssl_ciphers DEFAULT;
Context: http, server, location
This directive appeared in version 1.5.6.
νλ‘μ μ€μ λ HTTPS μλ²μ λν μμ²μ λν΄ νμ±νλ μνΈνλ₯Ό μ§μ ν©λλ€. μνΈνλ OpenSSL λΌμ΄λΈλ¬λ¦¬κ° μ΄ν΄νλ νμμΌλ‘ μ§μ λ©λλ€.
μ 체 λͺ©λ‘μ “openssl ciphers” λͺ λ Ήμ μ¬μ©νμ¬ νμΈν μ μμ΅λλ€.
Syntax: proxy_ssl_conf_command command;
Default: β
Context: http, server, location
This directive appeared in version 1.19.4.
νλ‘μ μ€μ λ HTTPS μλ²μμ μ°κ²°μ μ€μ ν λ μμμ OpenSSL κ΅¬μ± λͺ λ Ήμ μ€μ ν©λλ€.
λͺ λ Ήμ OpenSSL 1.0.2 μ΄μμ μ¬μ©νλ κ²½μ° μ§μλ©λλ€.
μ¬λ¬ proxy_ssl_conf_command λͺ λ Ήμ λμΌν μμ€μμ μ§μ ν μ μμ΅λλ€. μ΄λ¬ν λͺ λ Ήμ νμ¬ μμ€μ μ μλ proxy_ssl_conf_command λͺ λ Ήμ΄ μλ κ²½μ°μλ§ μ΄μ κ΅¬μ± μμ€μμ μμλ©λλ€.
OpenSSLμ μ§μ ꡬμ±νλ©΄ μκΈ°μΉ λͺ»ν λμμ΄ λ°μν μ μμ΅λλ€.
Syntax: proxy_ssl_crl file;
Default: β
Context: http, server, location
This directive appeared in version 1.7.0.
Syntax: proxy_ssl_name name;
Default: proxy_ssl_name $proxy_host;
Context: http, server, location
This directive appeared in version 1.7.0.
νλ‘μ μ€μ λ HTTPS μλ²μ μΈμ¦μλ₯Ό νμΈνκ³ νλ‘μ μ€μ λ HTTPS μλ²μμ μ°κ²°μ μ€μ ν λ SNI ν΅κ³Όνλ λ° μ¬μ©λλ μλ² μ΄λ¦μ μ¬μ μλ₯Ό νμ©ν©λλ€.
κΈ°λ³Έμ μΌλ‘ proxy_pass URLμ νΈμ€νΈ λΆλΆμ΄ μ¬μ©λ©λλ€.
Syntax: proxy_ssl_password_file file;
Default: β
Context: http, server, location
This directive appeared in version 1.7.8.
κ° μνΈκ° λ³λμ νμ μ§μ λ λΉλ° ν€μ λν μνΈλ₯Ό μ¬μ©νμ¬ νμΌμ μ§μ ν©λλ€. μνΈλ κ²°κ³Όμ μΌλ‘ ν€λ₯Ό λ‘λν λ μλλ©λλ€.
Syntax: proxy_ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
Default: proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Context: http, server, location
This directive appeared in version 1.5.6.
Syntax: proxy_ssl_server_name on | off;
Default: proxy_ssl_server_name off;
Context: http, server, location
This directive appeared in version 1.7.0.
νλ‘μ μ€μ λ HTTPS μλ²μμ μ°κ²°μ μ€μ ν λ μλ² μ΄λ¦μ΄ TLS Server Name Indication νμ₯(SNI, RFC 6066)μ ν΅κ³Όνλ κ²μ νμ±ννκ±°λ λΉνμ±νν©λλ€.
Syntax: proxy_ssl_session_reuse on | off;
Default: proxy_ssl_session_reuse on;
Context: http, server, location
νλ‘μ μ€μ λ μλ²λ‘ μμ μ μνν λ SSL μΈμ μ μ¬μ¬μ©ν μ μλμ§λ₯Ό κ²°μ ν©λλ€. λ‘κ·Έμ “SSL3_GET_FINISHED:digest check failed” μ€λ₯κ° λνλ κ²½μ° μΈμ μ¬μ¬μ©μ λΉνμ±νν΄λ³΄μΈμ.
Syntax: proxy_ssl_trusted_certificate file;
Default: β
Context: http, server, location
This directive appeared in version 1.7.0.
νλ‘μ μ€μ λ HTTPS μλ²μ μΈμ¦μλ₯Ό νμΈνλ λ° μ¬μ©λλ PEM νμμΌλ‘ μ λ’°ν μ μλ CA μΈμ¦μλ₯Ό μ¬μ©νμ¬ νμΌμ μ§μ ν©λλ€.
Syntax: proxy_ssl_verify on | off;
Default: proxy_ssl_verify off;
Context: http, server, location
This directive appeared in version 1.7.0.
νλ‘μ μ€μ λ HTTPS μλ² μΈμ¦μμ νμΈμ νμ±ννκ±°λ λΉνμ±νν©λλ€.
Syntax: proxy_ssl_verify_depth number;
Default: proxy_ssl_verify_depth 1;
Context: http, server, location
This directive appeared in version 1.7.0.
νλ‘μ μ€μ λ HTTPS μλ² μΈμ¦μ 체μΈμ νμΈ κΉμ΄λ₯Ό μ€μ ν©λλ€.
Syntax: proxy_store on | off | string;
Default: proxy_store off;
Context: http, server, location
λμ€ν¬μ νμΌ μ μ₯μ νμ±νν©λλ€. on λ§€κ°λ³μλ λͺ λ Ή λ³μΉ λλ 루νΈμ ν΄λΉνλ κ²½λ‘λ‘ νμΌμ μ μ₯ν©λλ€. off λ§€κ°λ³μλ νμΌ μ μ₯μ λΉνμ±νν©λλ€. λν, νμΌ μ΄λ¦μ΄ λ³μλ₯Ό ν¬ν¨νλ λ¬Έμμ΄μ μ¬μ©νμ¬ λͺ μμ μΌλ‘ μ€μ λ μ μμ΅λλ€.
proxy_store /data/www$original_uri;
νμΌμ μμ μκ°μ μμ λ “Last-Modified” μλ΅ ν€λ νλμ λ°λΌ μ€μ λ©λλ€. μλ΅μ΄ λ¨Όμ μμ νμΌμ κΈ°λ‘λ λ€μ νμΌ μ΄λ¦μ΄ λ³κ²½λ©λλ€. λ²μ 0.8.9λΆν° μμ νμΌκ³Ό μꡬ μ μ₯μλ₯Ό λ€λ₯Έ νμΌ μμ€ν μ λ£μ μ μμ΅λλ€. νμ§λ§ μ΄ κ²½μ° λΉμ©μ΄ μ κ² λλ μ΄λ¦ λ³κ²½ μμ λμ 2κ°μ νμΌ μμ€ν μ 체μμ νμΌμ΄ 볡μ¬λ©λλ€. λ°λΌμ μ£Όμ΄μ§ μμΉμμ proxy_temp_path λͺ λ ΉμΌλ‘ μ€μ λλ μ μ₯λ νμΌκ³Ό μμ νμΌ ν¬ν¨ λλ ν°λ¦¬ λͺ¨λ λμΌν νμΌ μμ€ν μ λ°°μΉνλ κ²μ΄ μ’μ΅λλ€.
μ΄ λͺ λ Ήμ μ μ λ³κ²½ λΆκ° νμΌμ λ‘컬 볡μ¬λ³Έμ μμ±νλ λ° μ¬μ©λ©λλ€. μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ΅λλ€.
location /images/ {
root /data/www;
error_page 404 = /fetch$uri;
}
location /fetch/ {
internal;
proxy_pass http://backend/;
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path /data/temp;
alias /data/www/;
}
λλ λ€μκ³Ό κ°μ΅λλ€.
location /images/ {
root /data/www;
error_page 404 = @fetch;
}
location @fetch {
internal;
proxy_pass http://backend;
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path /data/temp;
root /data/www;
}
Syntax: proxy_store_access users:permissions ...;
Default: proxy_store_access user:rw;
Context: http, server, location
μλ‘ μμ±λ νμΌ λ° λλ ν°λ¦¬μ λν μ‘μΈμ€ κΆνμ μ€μ ν©λλ€. μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ΅λλ€.
proxy_store_access user:rw group:rw all:r;
λͺ¨λ κ·Έλ£Ή λλ λͺ¨λ μ‘μΈμ€ κΆνμ΄ μ§μ λλ©΄ μ¬μ©μ κΆνμ΄ μλ΅λ μ μμ΅λλ€.
proxy_store_access group:rw all:r;
Syntax: proxy_temp_file_write_size size;
Default: proxy_temp_file_write_size 8k|16k;
Context: http, server, location
νλ‘μ μ€μ λ μλ²μμ μμ νμΌλ‘μ μλ΅ λ²νΌλ§μ΄ νμ±νλ κ²½μ° μμ νμΌμ ν λ²μ κΈ°λ‘λλ λ°μ΄ν°μ ν¬κΈ°λ₯Ό μ νν©λλ€. κΈ°λ³Έμ μΌλ‘ ν¬κΈ°λ proxy_buffer_size λ° proxy_buffers λͺ λ ΉμΌλ‘ μ€μ λλ 2κ° λ²νΌλ‘ μ νλ©λλ€. μμ νμΌμ μ΅λ ν¬κΈ°λ proxy_max_temp_file_size λͺ λ ΉμΌλ‘ μ€μ λ©λλ€.
Syntax: proxy_temp_path path [level1 [level2 [level3]]];
Default: proxy_temp_path proxy_temp;
Context: http, server, location
νλ‘μ μ€μ λ μλ²μμ μμ λ λ°μ΄ν°μ ν¨κ» μμ νμΌμ μ μ₯νλ λλ ν°λ¦¬λ₯Ό μ μν©λλ€. μ§μ λ λλ ν°λ¦¬ μλ μ΅λ 3κ° μμ€μ νμ λλ ν°λ¦¬ κ³μΈ΅ ꡬ쑰λ₯Ό μ¬μ©ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, λ€μ ꡬμ±μμ
proxy_temp_path /spool/nginx/proxy_temp 1 2;
μμ νμΌμ λ€μκ³Ό κ°μ μ μμ΅λλ€.
/spool/nginx/proxy_temp/7/45/00000123457
proxy_cache_path λͺ λ Ήμ use_temp_path λ§€κ°λ³μλ μ°Έμ‘°νμΈμ.
μλ² λλ λ³μ
ngx_http_proxy_module λͺ¨λμ proxy_set_header λͺ λ Ήμ μ¬μ©νμ¬ ν€λλ₯Ό ꡬμ±νλ λ° μ¬μ©ν μ μλ ν¬ν¨λ λ³μλ₯Ό μ§μν©λλ€.
$proxy_host
proxy_pass λͺ λ Ήμ μ§μ λ νλ‘μ μ€μ λ μλ²μ μ΄λ¦ λ° ν¬νΈ
$proxy_port
proxy_pass λͺ λ Ή λλ νλ‘ν μ½μ κΈ°λ³Έ ν¬νΈμ μ§μ λ νλ‘μ μ€μ λ μλ²μ ν¬νΈ
$proxy_add_x_forwarded_for
$remote_addr λ³μκ° μΆκ°λκ³ μΌνλ‘ κ΅¬λΆλ “X-Forwarded-For” ν΄λΌμ΄μΈνΈ μμ² ν€λ νλ “X-Forwarded-For” νλκ° ν΄λΌμ΄μΈνΈ μμ² ν€λμ μλ κ²½μ° $proxy_add_x_forwarded_for λ³μλ $remote_addr λ³μμ λμΌν©λλ€.