Nginx ํ๋ก์ ํธ ๊ฐ๋ฐ์ ์ถํํ๋ค JavaScript ์ธ์ด ์ธํฐํ๋ฆฌํฐ ์ถ์ - njs 0.4.0. njs ์ธํฐํ๋ฆฌํฐ๋ ECMAScript ํ์ค์ ๊ตฌํํ๋ฉฐ ๊ตฌ์ฑ์์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ์ ์ฒ๋ฆฌํ๋ Nginx์ ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์์ต๋๋ค. ๊ตฌ์ฑ ํ์ผ์์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ ์ฒ๋ฆฌ, ๊ตฌ์ฑ ์์ฑ, ๋์ ์ผ๋ก ์๋ต ์์ฑ, ์์ฒญ/์๋ต ์์ ๋๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฌธ์ ํด๊ฒฐ์ ์ํ ์คํ
์ ์ ์์ฑ์ ์ํ ๊ณ ๊ธ ๋
ผ๋ฆฌ๋ฅผ ์ ์ํ ์ ์์ต๋๋ค.
์ ๋ฆด๋ฆฌ์ค์์๋ ์ง์นจ์ ๊ตฌํํฉ๋๋ค. js_import ๋ณ์ ๋๋ ์์น ํธ๋ค๋ฌ ๊ตฌํ์ ํตํด JavaScript ๋ชจ๋์ ๊ฐ์ ธ์ค๊ธฐ ์ํ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด foo.js ๋ชจ๋์์๋ ํน์ ๊ฒฝ๋ก์ ๊ด๋ จํ์ฌ ํธ์ถํ ์ ์๋ ํจ์ ํ์์ค์ ์ ์ํ ์ ์์ต๋๋ค.
foo.js :
ํจ์ ๋ฐ(r) {
r.return(200);
}
๊ธฐ๋ณธ๊ฐ {bar} ๋ด๋ณด๋ด๊ธฐ;
nginx.conf:
js_import foo.js;
์์น / {
js_content foo.bar;
}
๊ฐ์ฒด์์ r.headersOut ์ฌ๋ฌ ๊ฐ์ ํฌํจํ๋ ํค๋์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ์:
ํจ์ ๋ด์ฉ(r) {
r.headersOut['Set-Cookie'] = [
'foo=111; ์ต๋ ์ฐ๋ น=3600; ๊ฒฝ๋ก=/',
'๋ฐ=qqq; ์ต๋ ์ฐ๋ น=86400; ๊ฒฝ๋ก=/'
];
r.return(200);
}
์ถ๊ฐ์ ์ผ๋ก ์ฃผ๋ชฉํ ์ ์๋ ๊ฒ์ ัะพะพะฑัะตะฝะธะต Rambler Group ํ์ฌ ์๊ฐ ๋ฐฉํฅ ์์ฌ๊ธฐ๊ด์ ๊ณต์์ ์ผ๋ก ํด๊ณ ๋ฅผ ์ฒญ์ํจ ํ์ฌ ์ฌ๊ฑดNginx์ ๊ด๋ จ์ด ์์ต๋๋ค. ํ์์๋ ์งํ์ ์ผ๋ถ๋ก ์ ์ก๋์์ต๋๋ค. ๋ฐํ ๋ 12์์๋ Rambler Group ์ด์ฌํ๊ฐ Nginx์์ ์ ์ฐจ๋ฅผ ๋ฏผ๋ฒ ๋ถ์ผ๋ก ์ด์ ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์์ธ๋ฌ ๋จ๋ธ๋ฌ๋ฅผ ๋๋ฆฌํด ์ฒ์์ผ๋ก ๋ฒ์งํ๊ธฐ๊ด๊ณผ ์ ์ดํ๋ ๋ฒ๋ฌด๋ฒ์ธ ๋ฆฐ์ฐ๋์ธ๋ฒ ์คํธ๋จผํธCY(Lynwood Investments CY Ltd)์์ ๊ณ์ฝ๋ ํด์ง๋ ๊ฒ์ผ๋ก ์ ํด์ก๋ค.
ํฅ๋ฏธ๋กญ๊ฒ๋ ๊ณ์ฝ ์ข
๋ฃ์๋ ๋ถ๊ตฌํ๊ณ Lynwood Investments CY Ltd๋ NGINX ์ฌ๊ฑด์์ ์์ ๊ณผ ์ด์ต์ ์ํด ์ํด ๋ฐ ๋ณด์์ ์ฆ๋ช
ํ ๊ถ๋ฆฌ๋ฅผ ๋ณด์ ํ์ง๋ง Rambler๋ฅผ ๋์ ํ์ฌ ๋น์ฆ๋์ค๋ฅผ ์ํํ ๊ถ๋ฆฌ๋ ์์ต๋๋ค. ๊ทธ๋ฃน. ์ ์ํด ์ ๋ณด ๋์งํธ ๊ถ๋ฆฌ ์ผํฐ์ ๋ณํธ์ฌ๋ก๋ถํฐ Rambler์ ์ฒญ์์ ์ ํจํ์ง ์์ต๋๋ค. ํ์ฌ ์ฌ๊ฑด์ ๋น์ฌ์์ ํํด์ ์ํด์๋ง ์ข
๋ฃ๋ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ํ์ฌ ์ฌ๊ฑด์์ ๋ง๋ญ์น ๋ถ์ฌ์ ๋ํ ๊ฒฐ์ ์ ์์ฌ ๋น๊ตญ.
์ถ์ฒ : opennet.ru