Cabang utama nginx 1.19.7 geus dileupaskeun, dina nu ngembangkeun fitur anyar terus (dina paralel dirojong cabang stabil 1.18, ngan parobahan patali ngaleungitkeun kasalahan serius tur vulnerabilities dijieun).
Parobahan utama:
- ΠΡΠΈ ΠΈΡΡΠ΅ΡΠΏΠ°Π½ΠΈΠΈ ΡΠ°Π±ΠΎΡΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ, nginx ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ keepalive-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π½ΠΎ ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π·Π°ΠΊΡΡΡΠΈΡ ΡΠΎΠΊΠ΅ΡΠ° (Β«lingering closeΒ»).
- ΠΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Π² HTTP/2 ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ HTTP/1.x. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Β«http2_recv_timeoutΒ», Β«http2_idle_timeoutΒ» ΠΈ Β«http2_max_requestsΒ» ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° Π² ΠΏΠΎΠ»ΡΠ·Ρ ΠΎΠ±ΡΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² Β«keepalive_timeoutΒ» ΠΈ Β«keepalive_requestsΒ».
- Π£Π΄Π°Π»Π΅Π½Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Β«http2_max_field_sizeΒ» ΠΈ Β«http2_max_header_sizeΒ», Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΡΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Β«large_client_header_buffersΒ».
Dina waktos anu sami, njs 0.5.1 dileupaskeun, juru basa JavaScript pikeun pangladΓ©n wΓ©b nginx. Juru njs ngalaksanakeun standar ECMAScript sareng ngamungkinkeun anjeun ngalegaan kamampuan nginx pikeun ngolah pamundut nganggo skrip dina konfigurasi. Skrip tiasa dianggo dina file konfigurasi pikeun ngartikeun logika canggih pikeun ngolah pamundut, ngahasilkeun konfigurasi, dinamis ngahasilkeun rΓ©spon, ngarobih pamundut/rΓ©spon, atanapi gancang-gancang nyiptakeun stub pikeun ngarengsekeun masalah dina aplikasi wΓ©b.
Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° Β«js_header_filterΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ Π·Π°Π΄Π°ΡΡ JavaScript-ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΎΡΠ²Π΅ΡΠ°: js_import foo.js; location / { js_header_filter foo.filter; proxy_pass http://127.0.0.1:8081/; } foo.js: function filter(r) { var cookies = r.headersOut[βSet-Cookieβ]; var len = r.args.len ? Number(r.args.len) : 0; r.headersOut[βSet-Cookieβ] = cookies.filter(v=>v.length > len); } export default {filter};
Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄ ngx.fetch(), ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ API Fetch, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ HTTP-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΎΠΏΡΠΈΠΉ body, headers, buffer_size ΠΈ max_response_body_size. Π Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Response ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type ΠΈ url, Π° Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Header ΠΌΠ΅ΡΠΎΠ΄Ρ get(), getAll() ΠΈ has(). function fetch(r) { ngx.fetch(βhttp://nginx.org/β) .then(reply => reply.text()) .then(body => r.return(200, body)) .catch(e => r.return(501, e.message)); }
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ NGINX Unit 1.22, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°ΠΏΡΡΠΊΠ° web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js ΠΈ Java). ΠΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ NGINX Unit ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠ°Π²ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°. ΠΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0.
Π Π½ΠΎΠ²ΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅ NGINX Unit ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ. Π ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌΡΡ
Π΄Π»Ρ Linux ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π³ΡΡΠΏΠΏΠ°, ΠΏΠΎΠ΄ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ NGINX Unit. ΠΠΌΠ΅ΡΡΠΎ nobody:nobody ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎΠ΄ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ unit Π² Π³ΡΡΠΏΠΏΠ΅ unit. ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ API Stream ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ServerRequest ΠΈ ServerResponse ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ Node.js. Π ΠΎΠΏΡΠΈΠΈ Β«pathΒ» Π΄Π»Ρ Python-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ².
sumber: opennet.ru