nginx 1.19.7-āĻāĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻļāĻžāĻāĻž āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻā§āĻ˛āĻŋāĻ° āĻŦāĻŋāĻāĻžāĻļ āĻ āĻŦā§āĻ¯āĻžāĻšāĻ¤ āĻ°āĻ¯āĻŧā§āĻā§ (āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤ āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§āĻ˛ āĻļāĻžāĻāĻž 1.18-āĻ, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻā§āĻ°ā§āĻ¤āĻ° āĻ¤ā§āĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻĻā§āĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ)āĨ¤
āĻ āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž:
- āĻ¯āĻāĻ¨ āĻāĻāĻāĻŋ āĻāĻ°ā§āĻŽā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻŋāĻ¨āĻžāĻŽā§āĻ˛ā§āĻ¯ā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻĢā§āĻ°āĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧ, āĻ¤āĻāĻ¨ nginx āĻāĻāĻ¨ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ˛āĻžāĻāĻ āĻ¸āĻāĻ¯ā§āĻāĻā§āĻ˛āĻŋāĻ āĻŦāĻ¨ā§āĻ§ āĻāĻ°ā§ āĻ¨āĻž, āĻ¸āĻā§āĻāĻāĻŋ āĻŦāĻ¨ā§āĻ§ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻ āĻĒā§āĻā§āĻˇāĻžāĻ¯āĻŧ āĻĨāĻžāĻāĻž āĻ¸āĻāĻ¯ā§āĻāĻā§āĻ˛āĻŋāĻ āĻŦāĻ¨ā§āĻ§ āĻāĻ°ā§ āĻĻā§āĻ¯āĻŧ ("āĻ˛ā§āĻā§āĻāĻžāĻ°āĻŋāĻ āĻā§āĻ˛ā§āĻ")āĨ¤
- 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" āĻ āĻĒāĻ¸āĻžāĻ°āĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ "āĻŦāĻĄāĻŧ_āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ_āĻšā§āĻĄāĻžāĻ°_āĻŦāĻžāĻĢāĻžāĻ°" āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻāĻāĻŋāĻ¤āĨ¤
āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§, njs 0.5.1 āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, nginx āĻāĻ¯āĻŧā§āĻŦ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻĻā§āĻāĻžāĻˇā§āĨ¤ njs āĻāĻ¨ā§āĻāĻžāĻ°āĻĒā§āĻ°ā§āĻāĻžāĻ° ECMAScript āĻŽāĻžāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ āĻ¨ā§āĻ°ā§āĻ§āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ nginx-āĻāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻā§āĻ˛āĻŋ āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨ā§āĻ¨āĻ¤ āĻ¯ā§āĻā§āĻ¤āĻŋ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻ¤ā§, āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§, āĻāĻ¤āĻŋāĻļā§āĻ˛āĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§, āĻāĻāĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§/āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§, āĻŦāĻž āĻāĻ¯āĻŧā§āĻŦ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻā§āĻ˛āĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĻā§āĻ°ā§āĻ¤ āĻ¸ā§āĻāĻžāĻŦ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§āĨ¤
āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ "js_header_filter" āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻāĻž āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻāĻžāĻ°ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻļāĻŋāĻ°ā§āĻ¨āĻžāĻŽāĻā§āĻ˛āĻŋ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻŋāĻ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻĢāĻžāĻāĻļāĻ¨ āĻ¸ā§āĻ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧ: js_import foo.js; āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ¨ / { js_header_filter foo.filter; āĻĒā§āĻ°āĻā§āĻ¸āĻŋ_āĻĒāĻžāĻ¸ http://127.0.0.1:8081/; } foo.js: āĻĢāĻžāĻāĻļāĻ¨ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°(r) { var āĻā§āĻāĻŋāĻ = r.headersOut['Set-Cookie']; var len = r.args.len? āĻ¸āĻāĻā§āĻ¯āĻž(r.args.len): 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } āĻ°āĻĒā§āĻ¤āĻžāĻ¨āĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āĻ {filter};
āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ ngx.fetch() āĻĒāĻĻā§āĻ§āĻ¤āĻŋ, āĻ¯āĻž Fetch API āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°ā§, āĻ¯āĻž HTTP āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻŦāĻĄāĻŋ, āĻšā§āĻĄāĻžāĻ°, āĻŦāĻžāĻĢāĻžāĻ°_āĻ¸āĻžāĻāĻ āĻāĻŦāĻ max_response_body_size āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§āĨ¤ āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻž āĻ°ā§āĻ¸āĻĒāĻ¨ā§āĻ¸ āĻ āĻŦāĻā§āĻā§āĻ arrayBuffer(), bodyUsed, json(), āĻšā§āĻĄāĻžāĻ°, ok, redirect, status, statusText, text(), āĻāĻžāĻāĻĒ āĻāĻŦāĻ url āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§ āĻāĻŦāĻ āĻšā§āĻĄāĻžāĻ° āĻ āĻŦāĻā§āĻā§āĻ get(), getAll() āĻāĻŦāĻ has() āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§āĨ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻ¨ā§āĻ¨ (e => r.return(200, e.message)); }
āĻāĻĒāĻ¨āĻŋ NGINX āĻāĻāĻ¨āĻŋāĻ 1.22 āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻāĻžāĻļāĻ¨āĻžāĻ āĻ¨ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ¯āĻž āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻāĻžāĻˇāĻžāĻ¯āĻŧ (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js āĻāĻŦāĻ Java) āĻāĻ¯āĻŧā§āĻŦ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°ā§āĨ¤ NGINX āĻāĻāĻ¨āĻŋāĻ āĻāĻāĻ āĻ¸āĻžāĻĨā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻāĻžāĻˇāĻžāĻ¯āĻŧ āĻāĻāĻžāĻ§āĻŋāĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¯āĻžāĻ° āĻ˛āĻā§āĻ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻāĻŦāĻ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻ¤āĻŋāĻļā§āĻ˛āĻāĻžāĻŦā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻā§āĻĄāĻāĻŋ C āĻ¤ā§ āĻ˛ā§āĻāĻž āĻāĻŦāĻ Apache 2.0 āĻ˛āĻžāĻāĻ¸ā§āĻ¨ā§āĻ¸ā§āĻ° āĻ āĻ§ā§āĻ¨ā§ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
NGINX āĻāĻāĻ¨āĻŋāĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ°āĻŋāĻ˛āĻŋāĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧāĻŋāĻ¤ā§āĻŦā§āĻ° āĻāĻ¨ā§āĻ¨āĻ¤āĻŋ, āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻ¸āĻ°āĻā§āĻāĻžāĻŽ āĻ¸āĻŽā§āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŖ āĻāĻŦāĻ āĻŦāĻžāĻ āĻ¸āĻāĻļā§āĻ§āĻ¨ā§āĻ° āĻāĻĒāĻ° āĻĻā§āĻˇā§āĻāĻŋ āĻ¨āĻŋāĻŦāĻĻā§āĻ§ āĻāĻ°ā§āĨ¤ Linux-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻĒā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋāĻ¤ā§, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻāĻŦāĻ āĻā§āĻˇā§āĻ ā§ āĻ¯āĻžāĻ° āĻ
āĻ§ā§āĻ¨ā§ NGINX āĻāĻāĻ¨āĻŋāĻ āĻāĻ˛ā§ āĻ¤āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻžāĻ°ā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§:āĻā§āĻ¨āĻ āĻ¨āĻ¯āĻŧ, āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ˛āĻŋ āĻāĻāĻ¨ āĻāĻāĻ¨āĻŋāĻ āĻā§āĻ°ā§āĻĒā§ āĻĒā§āĻĨāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻāĻāĻ¨āĻŋāĻā§āĻ° āĻ
āĻ§ā§āĻ¨ā§ āĻāĻ˛ā§āĨ¤ Node.js āĻŽāĻĄāĻŋāĻāĻ˛ āĻĨā§āĻā§ ServerRequest āĻāĻŦāĻ ServerResponse āĻ
āĻŦāĻā§āĻā§āĻā§āĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻŽ API-āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻĒāĻžāĻāĻĨāĻ¨ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ "āĻĒāĻĨ" āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ āĻāĻāĻžāĻ§āĻŋāĻ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻžāĻ° āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧāĨ¤
āĻāĻ¤ā§āĻ¸: opennet.ru