nginx 1.25.3, njs 0.8.2 āĻāĻŦāĻ‚ NGINX āχāωāύāĻŋāϟ 1.31.1 āϰāĻŋāϞāĻŋāϜ

nginx 1.25.3 āĻāϰ āĻĒā§āϰāϧāĻžāύ āĻļāĻžāĻ–āĻž āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϝāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋāϰ āĻŦāĻŋāĻ•āĻžāĻļ āĻ…āĻŦā§āϝāĻžāĻšāϤ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞ-āϰāĻ•ā§āώāĻŖāĻžāĻŦ⧇āĻ•ā§āώāĻŖ āĻ•āϰāĻž āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āĻļāĻžāĻ–āĻž 1.24.x-āĻ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϗ⧁āϰ⧁āϤāϰ āĻŦāĻžāĻ— āĻāĻŦāĻ‚ āĻĻ⧁āĻ°ā§āĻŦāϞāϤāĻž āĻĻā§‚āϰ āĻ•āϰāĻžāϰ āϏāĻžāĻĨ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇, āĻĒā§āϰāϧāĻžāύ āĻļāĻžāĻ–āĻž 1.25.x āĻāϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āĻļāĻžāĻ–āĻž 1.26 āĻ—āĻ āĻŋāϤ āĻšāĻŦ⧇āĨ¤ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϕ⧋āĻĄāϟāĻŋ āϏāĻŋ āϤ⧇ āϞ⧇āĻ–āĻž āĻāĻŦāĻ‚ āĻŦāĻŋāĻāϏāĻĄāĻŋ āϞāĻžāχāϏ⧇āĻ¨ā§āϏ⧇āϰ āĻ…āϧ⧀āύ⧇ āĻŦāĻŋāϤāϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋāϰ āĻŽāĻ§ā§āϝ⧇:

  • HTTP/2 āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟāĻĻ⧇āϰ āĻ…āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻ•āĻžāĻ°ā§āϝāĻ•āϞāĻžāĻĒ⧇āϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϏ⧁āϰāĻ•ā§āώāĻž āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻāĻŦāĻ‚ āĻŦāĻŋāĻļ⧇āώ āĻ•āϰ⧇, "āĻ°â€ā§āϝāĻžāĻĒāĻŋāĻĄ āϰāĻŋāϏ⧇āϟ" āĻ•ā§āϞāĻžāϏ⧇āϰ DoS āφāĻ•ā§āϰāĻŽāϪ⧇āϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇, āϝ⧇āĻ–āĻžāύ⧇ āĻāĻ•āϟāĻŋ āĻāĻ•āĻ• HTTP/2 āϏāĻ‚āϝ⧋āϗ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻŦāĻŋāĻĒ⧁āϞ āϏāĻ‚āĻ–ā§āϝāĻ• āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ āϰāĻŋāϏ⧇āϟ āĻĨā§āϰ⧇āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ⧇, āĻāχ āϧāϰāύ⧇āϰ āφāĻ•ā§āϰāĻŽāĻŖāϗ⧁āϞāĻŋ āϏāĻ‚āϝ⧋āĻ— āĻĒā§āϰāϤāĻŋ āĻ…āύ⧁āϰ⧋āϧ⧇āϰ āϏāĻ‚āĻ–ā§āϝāĻž "keepalive_requests" (āĻĒā§āϰāϤāĻŋ 1000 āĻ…āύ⧁āϰ⧋āϧ⧇āϰ āĻĒāϰ⧇ āϏāĻ‚āϝ⧋āĻ— āĻĒ⧁āύāϰāĻžāϝāĻŧ āϏ⧇āϟ āĻ•āϰāĻž āĻšāĻŦ⧇) āĻāĻŦāĻ‚ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž "limit_req" āĻĻā§āĻŦāĻžāϰāĻž āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāĨ¤ āĻĒā§āϰāϚ⧁āϰ āϏāĻ‚āĻ–ā§āϝāĻ• āĻĨā§āϰ⧇āĻĄā§‡āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ…āύ⧁āϰ⧋āϧ⧇āϰ āĻŦāĻ¨ā§āϝāĻžāϰ āφāϗ⧇ āϏāĻžāĻĄāĻŧāĻž āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ, āĻāĻ•āϟāĻŋ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻž āĻĄāĻŋāĻĢāĻ˛ā§āϟāĻ­āĻžāĻŦ⧇ āĻĒā§āϰāϤāĻŋ āχāϭ⧇āĻ¨ā§āϟ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϰāĻŖ āϚāĻ•ā§āϰ⧇ 256āϟāĻŋāϰ āĻŦ⧇āĻļāĻŋ (2 * max_concurrent_streams) āύāϤ⧁āύ āĻĨā§āϰ⧇āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ āύāĻžāĨ¤ āύāϤ⧁āύ āϏ⧀āĻŽāĻžāϟāĻŋ āĻāĻ•āχ āϏāĻžāĻĨ⧇ āĻĨā§āϰ⧇āĻĄā§‡āϰ āϏāĻ‚āĻ–ā§āϝāĻžāϰ āϏāĻžāĻŽāĻ—ā§āϰāĻŋāĻ• āϏ⧀āĻŽāĻžāϤ⧇ āĻĒ⧌āρāĻ›āĻžāύ⧋āϰ āφāϗ⧇ āĻ…āύ⧁āϰ⧋āϧāϗ⧁āϞāĻŋāϕ⧇ āĻŦā§āϞāĻ• āĻ•āϰāĻž āĻļ⧁āϰ⧁ āĻ•āϰāĻž āϏāĻŽā§āĻ­āĻŦ āĻ•āϰ⧇ āϤ⧋āϞ⧇, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ āϝāĻ–āύ āĻĨā§āϰ⧇āĻĄāϗ⧁āϞāĻŋ āĻ…ā§āϝāĻžāϏāĻŋāĻ™ā§āĻ•ā§āϰ⧋āύāĻžāϏāĻ­āĻžāĻŦ⧇ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰāĻž āĻšāĻšā§āϛ⧇ āĻŦāĻž āĻĢā§āϞāĻžāĻļ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇āĨ¤ āĻāĻ• āϏāĻĒā§āϤāĻžāĻš āφāϗ⧇ āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻ…ā§āϝāĻžāĻžā§āϜāĻŋ 1.3.1 (nginx āĻĢāĻ°ā§āĻ•) āĻāϰ āϰāĻŋāϞāĻŋāĻœā§‡āĻ“ āĻāĻ•āχ āϰāĻ•āĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤
  • āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ HTTP/2 āϏāĻ‚āϝ⧋āĻ— āϏāύāĻžāĻ•ā§āϤ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻŦāĻžāĻĢāĻžāϰāϗ⧁āϞāĻŋāϰ āωāĻ¨ā§āύāϤ āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāĻĒāύāĻžāĨ¤
  • āĻŦāĻŋāĻĒ⧁āϞ āϏāĻ‚āĻ–ā§āϝāĻ• "āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ" āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ āϏāĻš āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āϚāĻžāϞ⧁ āĻ•āϰāĻžāϰ āĻ•āĻ°ā§āĻŽāĻ•ā§āώāĻŽāϤāĻž āωāĻ¨ā§āύāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤
  • HTTP/2 āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻ•āϰ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āϝ⧇ āĻ•āĻ°ā§āĻŽā§€ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•ā§āĻ°ā§āϝāĻžāĻļ āϘāϟāϤ⧇ āĻĒāĻžāϰ⧇ āϤāĻž āĻ āĻŋāĻ• āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ SSL āĻāϰ.
  • āĻ–āĻžāϞāĻŋ āĻŦā§āϝāĻžāĻ–ā§āϝāĻžāĻŽā§‚āϞāĻ• āĻĒāĻžāĻ ā§āϝ āϏāĻš āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻĻā§āĻŦāĻžāϰāĻž āĻĢāĻŋāϰ⧇ āφāϏāĻž "āĻ¸ā§āĻĨāĻŋāϤāĻŋ" āĻļāĻŋāϰ⧋āύāĻžāĻŽā§‡āϰ āĻ¸ā§āĻĨāĻŋāϰ āϭ⧁āϞ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϰāĻŖāĨ¤
  • PCRE2 āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĒ⧁āύāσāĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ⧇āϰ āϏāĻŽāϝāĻŧ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϞāĻŋāĻ• āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤
  • HTTP/3 āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ°ā§āĻĨāύ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āϏāĻ‚āĻļā§‹āϧāύ āĻāĻŦāĻ‚ āωāĻ¨ā§āύāϤāĻŋāϰ āĻāĻ•āϟāĻŋ āĻŦāĻĄāĻŧ āĻ…āĻ‚āĻļ āϚāĻžāϞ⧁ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻ•āχ āϏāĻŽāϝāĻŧ⧇, njs 0.8.2, āĻāĻ•āϟāĻŋ āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āχāĻ¨ā§āϟāĻžāϰāĻĒā§āϰ⧇āϟāĻžāϰ āϝāĻžāϰ āϜāĻ¨ā§āϝ āĻ“āϝāĻŧ⧇āĻŦ āϏāĻžāĻ°ā§āĻ­āĻžāϰ nginxāĨ¤ njs āχāĻ¨ā§āϟāĻžāϰāĻĒā§āϰ⧇āϟāĻžāϰ ECMAScript āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ nginx āĻāϰ āĻ…āύ⧁āϰ⧋āϧ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϰāĻŖ āĻ•ā§āώāĻŽāϤāĻž āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰāϤ⧇ āφāĻĒāύāĻžāϕ⧇ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧāĨ¤ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟāϗ⧁āϞāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĢāĻžāχāϞ⧇ āωāĻ¨ā§āύāϤ āĻ…āύ⧁āϰ⧋āϧ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϰāĻŖ āϞāϜāĻŋāĻ• āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāϤ⧇, āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇, āĻ—āϤāĻŋāĻļā§€āϞāĻ­āĻžāĻŦ⧇ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇, āĻ…āύ⧁āϰ⧋āϧ/āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇, āĻ…āĻĨāĻŦāĻž āĻ“āϝāĻŧ⧇āĻŦ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϗ⧁āϞāĻŋāϤ⧇ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ⧇āϰ āϜāĻ¨ā§āϝ āĻĻā§āϰ⧁āϤ āĻ¸ā§āϟāĻžāĻŦ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āύāϤ⧁āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāĻ•āϟāĻŋ āĻ•āύāϏ⧋āϞ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϝāĻž error(), info(), log(), time(), timeEnd(), āĻāĻŦāĻ‚ warn() āĻĒāĻĻā§āϧāϤāĻŋ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ fs.existsSync() āĻĒāĻĻā§āϧāϤāĻŋāϟāĻŋ fs āĻŽāĻĄāĻŋāωāϞ⧇ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

āφāĻĒāύāĻŋ NGINX āχāωāύāĻŋāϟ 1.31.1 āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āĻĒā§āϰāĻ•āĻžāĻļāύāĻžāĻ“ āύ⧋āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āϝāĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāώāĻžāϝāĻŧ (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js āĻāĻŦāĻ‚ Java) āĻ“āϝāĻŧ⧇āĻŦ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ NGINX āχāωāύāĻŋāϟ āĻāĻ•āχ āϏāĻžāĻĨ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāώāĻžāϝāĻŧ āĻāĻ•āĻžāϧāĻŋāĻ• āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϚāĻžāϞāĻžāϤ⧇ āĻĒāĻžāϰ⧇, āϝāĻžāϰ āϞāĻžā§āϚ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰāϗ⧁āϞāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĢāĻžāχāϞ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž āĻāĻŦāĻ‚ āĻĒ⧁āύāϰāĻžāϝāĻŧ āϚāĻžāϞ⧁ āĻ•āϰāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻ›āĻžāĻĄāĻŧāĻžāχ āĻ—āϤāĻŋāĻļā§€āϞāĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ āĻ›āĻžāĻĄāĻŧāĻžāĻ“, Wasm āĻŽāĻĄāĻŋāωāϞ⧇āϰ āύāϤ⧁āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖāϟāĻŋ 4 āĻ—āĻŋāĻ—āĻžāĻŦāĻžāχāĻŸā§‡āϰ āĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧ āĻĄā§‡āϟāĻž āϞ⧋āĻĄ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ āĻāĻŦāĻ‚ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, HTTP āĻ¸ā§āĻŸā§āϝāĻžāϟāĻžāϏ āϕ⧋āĻĄ āϏ⧇āϟ āĻ•āϰāĻž āϏāĻŽā§āĻ­āĻŦāĨ¤

āωāĻ¤ā§āϏ: opennet.ru

āĻāĻ•āϟāĻŋ āĻŽāĻ¨ā§āϤāĻŦā§āϝ āϜ⧁āĻĄāĻŧ⧁āύ