nginx 1.17.8 ๋ฐ njs 0.3.8 ์ถœ์‹œ

ํ˜•์„ฑ๋œ ์—…์ŠคํŠธ๋ฆผ ๋ฆด๋ฆฌ์Šค nginx 1.17.8, ๊ทธ ์•ˆ์—์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ์ด ๊ณ„์†๋ฉ๋‹ˆ๋‹ค(๋ณ‘๋ ฌ๋กœ ์•ˆ์ •์ ์ธ ์ง€์› ์ง€์›). ์ง€์  1.16 ์‹ฌ๊ฐํ•œ ์˜ค๋ฅ˜ ๋ฐ ์ทจ์•ฝ์  ์ œ๊ฑฐ์™€ ๊ด€๋ จ๋œ ๋ณ€๊ฒฝ๋งŒ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

์ฃผ์š” ๋ณ€๊ฒฝ:

  • ์ง€์‹œ๋ฌธ์—์„œ grpc_pass ์ฃผ์†Œ๋ฅผ ์ •์˜ํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์†Œ๊ฐ€ ๋„๋ฉ”์ธ ์ด๋ฆ„์œผ๋กœ ์ง€์ •๋˜๋ฉด ์„ค๋ช…๋œ ์„œ๋ฒ„ ๊ทธ๋ฃน ์ค‘์—์„œ ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•˜๊ณ , ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฉด ํ™•์ธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • SSL ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ํŒŒ์ดํ”„๋ผ์ธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ง€์นจ์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. debug_points HTTP/2 ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•  ๋•Œ.

์ถ”๊ฐ€์ ์œผ๋กœ ์ฃผ๋ชฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋ฌธ์ œ njs 0.3.8, nginx ์›น ์„œ๋ฒ„์šฉ JavaScript ์ธํ„ฐํ”„๋ฆฌํ„ฐ์ž…๋‹ˆ๋‹ค. njs ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ECMAScript ํ‘œ์ค€์„ ๊ตฌํ˜„ํ•˜๋ฉฐ ๊ตฌ์„ฑ์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” nginx์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ ์ฒ˜๋ฆฌ, ๊ตฌ์„ฑ ์ƒ์„ฑ, ๋™์ ์œผ๋กœ ์‘๋‹ต ์ƒ์„ฑ, ์š”์ฒญ/์‘๋‹ต ์ˆ˜์ • ๋˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์Šคํ… ์‹ ์† ์ƒ์„ฑ์„ ์œ„ํ•œ ๊ณ ๊ธ‰ ๋…ผ๋ฆฌ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” r.subrequest์— ๋Œ€ํ•œ Promise ์ง€์›์„ nginx ๋ชจ๋“ˆ์— ์ถ”๊ฐ€ํ•˜๊ณ  r.parent ์†์„ฑ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ:

  • ์•ฝ์† ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ˜•์‹ํ™”๋œ ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ArrayBuffer์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ดˆ๊ธฐ ๊ธฐํ˜ธ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • JSON.stringify()์— ๋Œ€ํ•œ ์™ธ๋ถ€ ์ œ์–ด๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Object.is();๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Object.setPrototypeOf()๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋„ ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž(ํ•ฉ์ฒด);
  • ์‚ฌ์–‘์„ ์ค€์ˆ˜ํ•˜๋„๋ก Object.getPrototypeOf()๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์–‘์„ ์ค€์ˆ˜ํ•˜๊ธฐ ์œ„ํ•ด Object.prototype.valueOf()๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ธ์‡„ํ•  ์ˆ˜ ์—†๋Š” ๊ฐ’์ด ์žˆ๋Š” JSON.stringify()๋ฅผ ์ˆ˜์ •ํ–ˆ์œผ๋ฉฐ
    ๋Œ€์ฒด ๊ธฐ๋Šฅ;

  • ์‚ฌ์–‘์— ๋”ฐ๋ผ "in" ์—ฐ์‚ฐ์ž๊ฐ€ ๊ณ ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Object.defineProperties()์— ๋”ฐ๋ผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
    ์‚ฌ์–‘์œผ๋กœ;

  • ์‚ฌ์–‘์— ๋”ฐ๋ผ Object.create()๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Fast Math๊ฐ€ ํ™œ์„ฑํ™”๋˜๋ฉด Number.prototype.toString(radix)์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • RegExp() ์ธ์Šคํ„ด์Šค ์†์„ฑ์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ€์ ธ์˜ฌ ๋•Œ ๊ฐ€์ ธ์˜ค๊ธฐ ์˜ค๋ฅ˜๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€