แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™ nginx 1.17.9 แž“แžทแž„ njs 0.3.9

แž”แžถแž“แž”แž„แŸ’แž€แžพแžแžกแžพแž„ แž€แžถแžšโ€‹แž…แŸแž‰โ€‹แž•แŸ’แžŸแžถแž™โ€‹แžแžถแž„โ€‹แž›แžพ nginx 1.17.9แžŠแŸ‚แž›แž€แŸ’แž“แžปแž„แž“แŸ„แŸ‡แž€แžถแžšแžขแž—แžทแžœแžŒแŸ’แžแž“แŸแžŸแž˜แžแŸ’แžแž—แžถแž–แžแŸ’แž˜แžธแž“แŸ…แžแŸ‚แž”แž“แŸ’แž (แž˜แžถแž“แžŸแŸ’แžแŸแžšแž—แžถแž–แžŸแŸ’แžšแž”แž‚แŸ’แž“แžถแŸ” แžŸแžถแžแžถ 1.16 แž˜แžถแž“แžแŸ‚แž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแžŠแŸ‚แž›แž‘แžถแž€แŸ‹แž‘แž„แž“แžนแž„แž€แžถแžšแž›แžปแž”แž”แŸ†แž”แžถแžแŸ‹แž€แŸ†แž แžปแžŸแž’แŸ’แž„แž“แŸ‹แž’แŸ’แž„แžš แž“แžทแž„แž—แžถแž–แž„แžถแž™แžšแž„แž‚แŸ’แžšแŸ„แŸ‡แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž”แžถแž“แž’แŸ’แžœแžพแžกแžพแž„)แŸ”

แžŸแŸ†แžแžถแž“แŸ‹ แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžš:

  • แžœแžถแžแŸ’แžšแžผแžœแž”แžถแž“แž แžถแž˜แžƒแžถแžแŸ‹แž˜แžทแž“แžฑแŸ’แž™แž”แž‰แŸ’แž‡แžถแž€แŸ‹แž”แž“แŸ’แž‘แžถแžแŸ‹ "แž˜แŸ‰แžถแžŸแŸŠแžธแž“" แž…แŸ’แžšแžพแž“แž“แŸ…แž€แŸ’แž“แžปแž„
    แž€แŸ’แž”แžถแž›แžŸแŸ’แž“แžพแžŸแžปแŸ†;

  • แž‡แžฝแžŸแž‡แžปแž›แž€แŸ†แž แžปแžŸแžŠแŸ‚แž› nginx แž˜แžทแž“แžขแžพแž–แžพแž“แžนแž„แž”แž“แŸ’แž‘แžถแžแŸ‹แž”แž“แŸ’แžแŸ‚แž˜
    "แž•แŸ’แž‘แŸแžš-แžขแŸŠแžทแž“แž€แžผแžŠ" แž“แŸ…แž€แŸ’แž“แžปแž„แž”แž‹แž˜แž€แžแžถแžŸแŸ†แžŽแžพแŸ”

  • แž€แžถแžšแž‡แžฝแžŸแž‡แžปแž›แžแŸ’แžšแžผแžœแž”แžถแž“แž’แŸ’แžœแžพแžกแžพแž„แžŠแžพแž˜แŸ’แž”แžธแž€แžถแžšแž–แžถแžšแž€แžถแžšแž›แŸแž…แž’แŸ’แž›แžถแž™แžšแž“แŸ’แž’แž“แŸ…แž–แŸแž›แž”แŸ’แžšแžพแž–แžทแž’แžธแž€แžถแžš HTTP/2 แŸ”
  • แž‡แžฝแžŸแž‡แžปแž›แž€แŸ†แž แžปแžŸแž•แŸ’แž“แŸ‚แž€แž“แŸ…แž€แŸ’แž“แžปแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž€แž˜แŸ’แž˜แž€แžšแžŠแŸ‚แž›แž€แžพแžแžกแžพแž„แž“แŸ…แž–แŸแž›แž”แŸ’แžšแžพ OCSP stapling;
  • แž€แžถแžšแž€แŸ‚แžแž˜แŸ’แžšแžผแžœแžแŸ’แžšแžผแžœแž”แžถแž“แž’แŸ’แžœแžพแžกแžพแž„แž…แŸ†แž–แŸ„แŸ‡แž˜แŸ‰แžผแžŒแžปแž› ngx_http_mp4_module;
  • แž”แžถแž“แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž”แž‰แŸ’แž แžถแž€แŸ’แž“แžปแž„แž€แžšแžŽแžธแžŠแŸ‚แž›แž“แŸ…แž–แŸแž›แž”แž‰แŸ’แž‡แžผแž“แž”แž“แŸ’แžแž€แŸ†แž แžปแžŸแž‡แžถแž˜แžฝแž™แž›แŸแžแž€แžผแžŠ 494 แžŠแŸ„แž™แž”แŸ’แžšแžพแž€แžถแžšแžŽแŸ‚แž“แžถแŸ† 'error_page' แž€แžถแžšแž†แŸ’แž›แžพแž™แžแž”แž‡แžถแž˜แžฝแž™แž›แŸแžแž€แžผแžŠ 494 แžขแžถแž…แžแŸ’แžšแž›แž”แŸ‹แž˜แž€แžœแžทแž‰แž‡แŸ†แž“แžฝแžŸแžฑแŸ’แž™ 400 แŸ”
  • แž€แžถแžšแž›แŸแž…แž’แŸ’แž›แžถแž™แžšแž“แŸ’แž’แžแŸแžšแž“แŸ…แž–แŸแž›แž”แŸ’แžšแžพแžŸแŸ†แžŽแžฝแžšแžšแž„แž“แŸ…แž€แŸ’แž“แžปแž„แž˜แŸ‰แžผแžŒแžปแž› njs แž“แžทแž„แž€แžถแžšแžŽแŸ‚แž“แžถแŸ† aio แŸ”

แž›แžพแžŸแž–แžธแž“แŸแŸ‡แž‘แŸ€แžแžœแžถแžขแžถแž…แžแŸ’แžšแžผแžœแž”แžถแž“แž€แžแŸ‹แžŸแž˜แŸ’แž‚แžถแž›แŸ‹ แž€แžถแžšแžŠแŸ„แŸ‡แž›แŸ‚แž„ njs แŸ แŸกแŸฃแžŠแŸ‚แž›แž‡แžถแžขแŸ’แž“แž€แž”แž€แž”แŸ’แžšแŸ‚ JavaScript แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸแž”แžŽแŸ’แžแžถแž‰ nginx แŸ” แžขแŸ’แž“แž€แž”แž€แž”แŸ’แžšแŸ‚ njs แžขแž“แžปแžœแžแŸ’แžแžŸแŸ’แžแž„แŸ‹แžŠแžถแžš ECMAScript แž“แžทแž„แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แž–แž„แŸ’แžšแžธแž€แžŸแž˜แžแŸ’แžแž—แžถแž–แžšแž”แžŸแŸ‹ nginx แžŠแžพแž˜แŸ’แž”แžธแžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŸแŸ†แžŽแžพแžŠแŸ„แž™แž”แŸ’แžšแžพแžŸแŸ’แž‚แŸ’แžšแžธแž”แž“แŸ…แž€แŸ’แž“แžปแž„แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แŸ” แžŸแŸ’แž‚แŸ’แžšแžธแž”แžขแžถแž…แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ’แžšแžพแž“แŸ…แž€แŸ’แž“แžปแž„แžฏแž€แžŸแžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แžŠแžพแž˜แŸ’แž”แžธแž€แŸ†แžŽแžแŸ‹แžแž€แŸ’แž€แžœแžทแž‡แŸ’แž‡แžถแž€แž˜แŸ’แžšแžทแžแžแŸ’แž–แžŸแŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŸแŸ†แžŽแžพ แž”แž„แŸ’แž€แžพแžแž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ แž”แž„แŸ’แž€แžพแžแž€แžถแžšแž†แŸ’แž›แžพแž™แžแž”แž‡แžถแž›แž€แŸ’แžแžŽแŸˆแžแžถแž˜แžœแž“แŸ’แž แž€แŸ‚แž”แŸ’แžšแŸ‚แžŸแŸ†แžŽแžพ/แž€แžถแžšแž†แŸ’แž›แžพแž™แžแž” แžฌแž”แž„แŸ’แž€แžพแž stubs แž™แŸ‰แžถแž„แž†แžถแž”แŸ‹แžšแž แŸแžŸแžŠแžพแž˜แŸ’แž”แžธแžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž”แž‰แŸ’แž แžถแž“แŸ…แž€แŸ’แž“แžปแž„แž€แž˜แŸ’แž˜แžœแžทแž’แžธแž‚แŸแž แž‘แŸ†แž–แŸแžšแŸ”

แž“แŸ…แž€แŸ’แž“แžปแž„แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™แžแŸ’แž˜แžธ แž˜แŸ‰แžผแžŒแžปแž› njs แž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แžšแž”แŸ€แž”แžŸแŸ’แž“แžพแžŸแžปแŸ†แž•แŸ’แžŠแžถแž…แŸ‹แž“แŸ…แž€แŸ’แž“แžปแž„ r.subrequest()แŸ” แž€แžถแžšแž†แŸ’แž›แžพแž™แžแž”แž‘แŸ…แž“แžนแž„แžŸแŸ†แžŽแžฝแžšแžšแž„แžŠแŸ‚แž›แž”แžถแž“แž•แŸ’แžŠแžถแž…แŸ‹แž˜แžทแž“แžแŸ’แžšแžผแžœแž”แžถแž“แžขแžพแž–แžพแŸ” แž˜แžทแž“แžŠแžผแž…แžŸแŸ†แžŽแžฝแžšแžšแž„แž’แž˜แŸ’แž˜แžแžถแž‘แŸ แžŸแŸ†แžŽแžฝแžšแžšแž„แžŠแŸ‚แž›แž”แžถแž“แž•แŸ’แžŠแžถแž…แŸ‹แžขแžถแž…แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž„แŸ’แž€แžพแžแž“แŸ…แžแžถแž„แž€แŸ’แž“แžปแž„แžงแž”แž€แžšแžŽแŸแžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แžขแžแŸแžšแŸ” แž•แž„แžŠแŸ‚แžšแŸ–

  • แž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž€แžถแžšแžŸแž“แŸ’แž™แžถ API แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž˜แŸ‰แžผแžŒแžปแž› "fs";
  • แž˜แžปแžแž„แžถแžš access(), symlink(), unlink(), แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ…แž˜แŸ‰แžผแžŒแžปแž› "fs" แŸ”
    realpath() แž“แžทแž„แžŸแŸ’แžšแžŠแŸ€แž„แž‚แŸ’แž“แžถ;

  • แžขแžถแžšแŸแž’แž˜แŸ’แž˜แžแžถ, แž˜แžถแž“แž”แŸ’แžšแžŸแžทแž‘แŸ’แž’แžทแž—แžถแž–แž€แŸ’แž“แžปแž„แž›แž€แŸ’แžแžแžŽแŸ’แžŒแž“แŸƒแž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžขแž„แŸ’แž‚แž…แž„แž…แžถแŸ†, แžแŸ’แžšแžผแžœแž”แžถแž“แžŽแŸ‚แž“แžถแŸ†;
  • แž€แžถแžšแž€แŸ‚แž›แž˜แŸ’แžขแžแŸ’แžšแžผแžœแž”แžถแž“แž’แŸ’แžœแžพแžกแžพแž„แžŠแžพแž˜แŸ’แž”แžธ lexer;
  • แž€แžถแžšโ€‹แž‡แžฝแžŸแž‡แžปแž›โ€‹แžแŸ’แžšแžผแžœโ€‹แž”แžถแž“โ€‹แž’แŸ’แžœแžพโ€‹แžกแžพแž„โ€‹แž…แŸ†แž–แŸ„แŸ‡โ€‹แž€แžถแžšโ€‹แž‚แžผแžŸโ€‹แž•แŸ‚แž“แž‘แžธโ€‹แž“แŸƒโ€‹แž˜แžปแžแž„แžถแžšโ€‹แžŠแžพแž˜โ€‹แž“แŸ…โ€‹แž€แŸ’แž“แžปแž„โ€‹แžŠแžถแž“โ€‹แžแžถแž„แž€แŸ’แžšแŸ„แž™แŸ”
    แžŠแžถแž“;

  • แž€แžถแžšโ€‹แž แŸ…โ€‹แžแŸ’แžšแžกแž”แŸ‹โ€‹แž˜แž€โ€‹แžœแžทแž‰โ€‹แžแŸแžšโ€‹แž€แŸ’แž“แžปแž„โ€‹แž˜แŸ‰แžผแžŒแžปแž› "fs";
  • แž€แžถแžšแž€แŸ‚แžแž˜แŸ’แžšแžผแžœแžแŸ’แžšแžผแžœแž”แžถแž“แž’แŸ’แžœแžพแžกแžพแž„แž…แŸ†แž–แŸ„แŸ‡ Object.getOwnPropertySymbols();
  • แž€แžถแžšแž แŸ€แžšแžŸแŸ†แž”แŸ„แžšแžŠแŸ‚แž›แž”แžถแž“แž‡แžฝแžŸแž‡แžปแž›แž“แŸ…แž€แŸ’แž“แžปแž„ njs_json_append_string();
  • แž”แžถแž“แž‡แžฝแžŸแž‡แžปแž›แž€แžถแžšแžขแŸŠแžทแž“แž€แžผแžŠURI() แž“แžทแž„ decodeURI() แžŠแžพแž˜แŸ’แž”แžธแžขแž“แžปแž›แŸ„แž˜แžแžถแž˜แž›แž€แŸ’แžแžŽแŸˆแž‡แžถแž€แŸ‹แž›แžถแž€แŸ‹แŸ”
  • แž”แžถแž“แž’แŸ’แžœแžพแž€แžถแžšแž‡แžฝแžŸแž‡แžปแž›แž‘แŸ…แž›แžพ Number.prototype.toPrecision();
  • แž€แžถแžšแžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™โ€‹แž€แžถแžšแžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™โ€‹แž›แŸ†แž โ€‹แžแŸแžšโ€‹แž€แŸ’แž“แžปแž„ JSON.stringify();
  • แž”แžถแž“แž’แŸ’แžœแžพแž€แžถแžšแž‡แžฝแžŸแž‡แžปแž›แž‘แŸ… JSON.stringify() แž‡แžถแž˜แžฝแž™แž“แžนแž„แžœแžแŸ’แžแžป Number() แž“แžทแž„ String();
  • แž”แžถแž“แž•แŸ’แžแž›แŸ‹แž€แžถแžšแž‚แŸแž…แž…แŸแž‰แž–แžธแžแžฝแžขแž€แŸ’แžŸแžšแž™แžผแž“แžธแž€แžผแžŠแž“แŸ…แž€แŸ’แž“แžปแž„ JSON.stringify() แž™แŸ„แž„แžแžถแž˜
    แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž”แž‰แŸ’แž‡แžถแž€แŸ‹;

  • แž€แžถแžšแž‡แžฝแžŸแž‡แžปแž›แžแŸ’แžšแžผแžœแž”แžถแž“แž’แŸ’แžœแžพแžกแžพแž„แž…แŸ†แž–แŸ„แŸ‡แž€แžถแžšแž“แžถแŸ†แž…แžผแž›แž˜แŸ‰แžผแžŒแžปแž›แžŠแŸ‚แž›แž˜แžทแž“แž˜แŸ‚แž“แž‡แžถแžŠแžพแž˜แŸ”
  • แž”แžถแž“แž’แŸ’แžœแžพแž€แžถแžšแž‡แžฝแžŸแž‡แžปแž›แž‘แŸ… njs.dump() แž‡แžถแž˜แžฝแž™แž“แžนแž„แžงแž‘แžถแž แžšแžŽแŸ Date() แž“แŸ…แž€แŸ’แž“แžปแž„แž€แžปแž„แžแžบแž“แŸแžšแŸ”

แž”แŸ’แžšแž—แž–: opennet.ru

แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹