nginx 1.25.3์ ๋ฉ์ธ ๋ธ๋์น๊ฐ ์ถ์๋์์ผ๋ฉฐ, ๊ทธ ์์์ ์๋ก์ด ๊ธฐ๋ฅ ๊ฐ๋ฐ์ด ๊ณ์๋๊ณ ์์ต๋๋ค. ๋ณ๋ ฌ๋ก ์ ์ง๋๋ ์์ ๋ธ๋์น 1.24.x์๋ ์ฌ๊ฐํ ๋ฒ๊ทธ ๋ฐ ์ทจ์ฝ์ ์ ๊ฑฐ์ ๊ด๋ จ๋ ๋ณ๊ฒฝ ์ฌํญ๋ง ํฌํจ๋์ด ์์ต๋๋ค. ํฅํ์๋ ๋ฉ์ธ ๋ธ๋์น 1.25.x๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ ์ ์ธ ๋ธ๋์น 1.26์ด ํ์ฑ๋ ์์ ์ด๋ค. ํ๋ก์ ํธ ์ฝ๋๋ C๋ก ์์ฑ๋์์ผ๋ฉฐ BSD ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
๋ณ๊ฒฝ ์ฌํญ:
- HTTP/2 ํด๋ผ์ด์ธํธ์ ๋น์ ์์ ์ธ ํ๋์ ๋ํ ๋ณดํธ๊ฐ ๊ฐํ๋์์ผ๋ฉฐ, ํนํ ๋จ์ผ HTTP/2 ์ฐ๊ฒฐ ๋ด์์ ๋ค์์ ์ฆ์ ์ฌ์ค์ ์ค๋ ๋๊ฐ ์์ฑ๋๋ "Rapid Reset" ํด๋์ค์ DoS ๊ณต๊ฒฉ์ ๋ํ ๋ณดํธ๊ฐ ๊ฐํ๋์์ต๋๋ค. ๊ธฐ๋ณธ ๊ตฌ์ฑ์์ ์ด๋ฌํ ๊ณต๊ฒฉ์ ์ฐ๊ฒฐ๋น ์์ฒญ ์ ์ ํ "keepalive_requests"(1000๊ฐ ์์ฒญ๋ง๋ค ์ฐ๊ฒฐ์ด ์ฌ์ค์ ๋จ)์ "limit_req" ์ ํ์ ์ํด ์ ํ๋ฉ๋๋ค. ๋ค์์ ์ค๋ ๋๋ฅผ ํตํ ์์ฒญ ํญ์ฃผ์ ์กฐ๊ธฐ์ ๋์ํ๊ธฐ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฒคํธ ์ฒ๋ฆฌ ์ฃผ๊ธฐ๋น 256๊ฐ(2 * max_concurrent_streams) ์ด์์ ์ ์ค๋ ๋ ์์ฑ์ ํ์ฉํ์ง ์๋ ์ถ๊ฐ ์ ํ ์ฌํญ์ด ์ถ๊ฐ๋์์ต๋๋ค. ์๋ก์ด ์ ํ์ ์ฌ์ฉํ๋ฉด ๋์ ์ค๋ ๋ ์์ ์ ์ฒด ์ ํ์ ๋๋ฌํ๊ธฐ ์ ์(์: ์ค๋ ๋๊ฐ ๋น๋๊ธฐ์์ผ๋ก ์ฒ๋ฆฌ๋๊ฑฐ๋ ํ๋ฌ์๋๋ ๊ฒฝ์ฐ) ์์ฒญ ์ฐจ๋จ์ ์์ํ ์ ์์ต๋๋ค. ์ผ์ฃผ์ผ ์ ์ ๋ฐํ๋ angie 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() ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ console ๊ฐ์ฒด๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. ๋ํ fs ๋ชจ๋์ fs.existsSync() ๋ฉ์๋๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
๋ํ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(Python, PHP, Perl, Ruby, Go, JavaScript/Node.js ๋ฐ Java)๋ก ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ๊ธฐ ์ํ ์๋ฃจ์
์ ์ ๊ณตํ๋ NGINX Unit 1.31.1 ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ์ ๊ณต๊ฐ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. NGINX ์ ๋์ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ๋์์ ์คํํ ์ ์์ผ๋ฉฐ, ๊ตฌ์ฑ ํ์ผ์ ํธ์งํ๊ณ ๋ค์ ์์ํ ํ์ ์์ด ์คํ ๋งค๊ฐ๋ณ์๋ฅผ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๋ฒ๊ทธ ์์ ์ธ์๋ Wasm ๋ชจ๋์ ์ ๋ฒ์ ์์๋ 4GB๋ณด๋ค ํฐ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ ์ ์์ผ๋ฉฐ ์๋ต ์ HTTP ์ํ ์ฝ๋๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru
