nginx 1.19.3 เช…เชจเซ‡ njs 0.4.4 เชจเซเช‚ เชชเซเชฐเช•เชพเชถเชจ

เชฐเชšเชจเชพ เชฎเซเช–เซเชฏ เชถเชพเช–เชพ เชชเซเชฐเช•เชพเชถเชจ nginx 1.19.3, เชœเซ‡เชฎเชพเช‚ เชจเชตเซ€ เชธเซเชตเชฟเชงเชพเช“เชจเซ‹ เชตเชฟเช•เชพเชธ เชšเชพเชฒเซ เชฐเชนเซ‡ เช›เซ‡ (เชธเชฎเชพเช‚เชคเชฐ เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เชธเซเชŸเซ‡เชฌเชฒเชฎเชพเช‚ เชถเชพเช–เชพ 1.18 เชฎเชพเชคเซเชฐ เช—เช‚เชญเซ€เชฐ เชญเซ‚เชฒเซ‹ เช…เชจเซ‡ เชจเชฌเชณเชพเชˆเช“เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพ เชธเช‚เชฌเช‚เชงเชฟเชค เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡).

เชฎเซเช–เซเชฏ เชซเซ‡เชฐเชซเชพเชฐ:

  • เชฎเซ‹เชกเซเชฏเซเชฒ เชธเชฎเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เช›เซ‡ ngx_stream_set_module, เชœเซ‡ เชคเชฎเชจเซ‡ เชšเชฒเชจเซ‡ เชฎเซ‚เชฒเซเชฏ เช…เชธเชพเช‡เชจ เช•เชฐเชตเชพเชจเซ€ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡

    เชธเชฐเซเชตเชฐ {
    เชธเชพเช‚เชญเชณเซ‹ 12345;
    $true 1 เชธเซ‡เชŸ เช•เชฐเซ‹;
    }

  • เชจเชฟเชฐเซเชฆเซ‡เชถ เช‰เชฎเซ‡เชฐเซเชฏเซ‹ proxy_cookie_flags เชชเซเชฐเซ‹เช•เซเชธเซ€เชก เช•เชจเซ‡เช•เซเชถเชจเซเชธเชฎเชพเช‚ เช•เซ‚เช•เซ€เช เชฎเชพเชŸเซ‡ เชซเซเชฒเซ‡เช—เซเชธ เชธเซเชชเชทเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช•เซ‚เช•เซ€ "เชเช•" เชฎเชพเช‚ "httponly" เชซเซเชฒเซ‡เช— เช…เชจเซ‡ เช…เชจเซเชฏ เชฌเชงเซ€ เช•เซ‚เช•เซ€เช เชฎเชพเชŸเซ‡ "nosecure" เช…เชจเซ‡ "samesite=strict" เชซเซเชฒเซ‡เช— เช‰เชฎเซ‡เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชฌเชพเช‚เชงเช•เชพเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:

    proxy_cookie_flags เชเช• httponly;
    proxy_cookie_flags ~ nosecure samesite = เช•เชกเช•;

  • เชธเชฎเชพเชจ เชจเชฟเชฐเซเชฆเซ‡เชถ userid_flags เช•เซ‚เช•เซ€เชฎเชพเช‚ เชซเซเชฒเซ‡เช— เช‰เชฎเซ‡เชฐเชตเชพ เชฎเชพเชŸเซ‡ ngx_http_userid เชฎเซ‹เชกเซเชฏเซเชฒ เชฎเชพเชŸเซ‡ เชชเชฃ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชธเชพเชฅเซ‹เชธเชพเชฅ เชธเซเชฅเชพเชจ เชฒเซ€เชงเซเช‚ เชชเซเชฐเช•เชพเชถเชจ เชเชจเชœเซ‡เชเชธ 0.4.4, nginx เชตเซ‡เชฌ เชธเชฐเซเชตเชฐ เชฎเชพเชŸเซ‡ JavaScript เชฆเซเชญเชพเชทเชฟเชฏเชพ. njs เชฆเซเชญเชพเชทเชฟเชฏเชพ ECMAScript เชงเซ‹เชฐเชฃเซ‹ เชฒเชพเช—เซ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเชฎเชจเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชฎเชพเช‚ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชตเชฟเชจเช‚เชคเซ€เช“ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชจเซ€ nginx เชจเซ€ เช•เซเชทเชฎเชคเชพเชจเซ‡ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒเชฎเชพเช‚ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชตเชฟเชจเช‚เชคเซ€เช“ เชฎเชพเชŸเซ‡ เช…เชฆเซเชฏเชคเชจ เชคเชฐเซเช•เชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเชตเชพ, เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพ, เช—เชคเชฟเชถเซ€เชฒ เชฐเซ€เชคเซ‡ เชชเซเชฐเชคเชฟเชญเชพเชต เชชเซ‡เชฆเชพ เช•เชฐเชตเชพ, เชตเชฟเชจเช‚เชคเซ€/เชชเซเชฐเชคเชฟเชธเชพเชฆเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเชตเชพ เช…เชฅเชตเชพ เชตเซ‡เชฌ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เชธเชฎเชธเซเชฏเชพเช“ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชเชกเชชเชฅเซ€ เชธเซเชŸเชฌ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชจเชตเชพ เชธเช‚เชธเซเช•เชฐเชฃเชฎเชพเช‚:

  • เชธเช‚เช–เซเชฏเชพเช“เชฎเชพเช‚ เช…เช‚เช•เซ‹เชจเชพ เชตเชฟเชเซเชฏเซเช…เชฒ เชตเชฟเชญเชพเชœเชจ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชฅเชจ เช‰เชฎเซ‡เชฐเซเชฏเซเช‚ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, โ€œ1_000โ€).
  • %TypedArray%.prototype เชฎเชพเชŸเซ‡ เช—เซเชฎ เชฅเชฏเซ‡เชฒ เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เช…เชฎเชฒ: every(), filter(), find(), findIndex(), forEach(), includes(), indexOf(), lastIndexOf(), map(), reduce(), เชฐเชฟเชกเซเชฏเซเชฐเชพเช‡เชŸ(), เชฐเชฟเชตเชฐเซเชธ(), เช•เซ‡เชŸเชฒเชพเช•().
  • %TypedArray% เชฎเชพเชŸเซ‡ เช—เซเชฎ เชฅเชฏเซ‡เชฒ เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เช…เชฎเชฒ เช•เชฐเซเชฏเซ‹: from(), of().
  • DataView เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเซ‹ เช…เชฎเชฒ เช•เชฐเซเชฏเซ‹.

    : >> (เชจเชตเซเช‚ เชกเซ‡เชŸเชพ เชตเซเชฏเซ‚(buf.buffer)).getUint16()
    : 32974

  • เช…เชฎเชฒเซ€ เชฌเชซเชฐ เช‘เชฌเซเชœเซ‡เช•เซเชŸ.

    : >> var buf = Buffer.from([0x80,206,177,206,178])
    : เช…เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค
    : >> buf.slice(1).toString()
    : 'ฮฑฮฒ'
    : >> buf.toString('base64')
    : 'gM6xzrI='

  • "เช•เซเชฐเชฟเชชเซเชŸเซ‹" เช…เชจเซ‡ "fs" เชชเชฆเซเชงเชคเชฟเช“เชฎเชพเช‚ เชฌเชซเชฐ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชธเชชเซ‹เชฐเซเชŸ เช‰เชฎเซ‡เชฐเซเชฏเซ‹, เช…เชจเซ‡ เช–เชพเชคเชฐเซ€ เช•เชฐเซ€ เช•เซ‡ fs.readFile(), Hash.prototype.digest() เช…เชจเซ‡ Hmac.prototype.digest() เช เชฌเชซเชฐ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเซ‹ เชฆเชพเช–เชฒเซ‹ เชชเชฐเชค เช•เชฐเซเชฏเซ‹ เช›เซ‡.
  • ArrayBuffer เช†เชงเชพเชฐ TextDecoder.prototype.decode() เชชเชฆเซเชงเชคเชฟเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹