๐ก ์น์๋ฒ๋ก ๋ง์ด ์ฌ์ฉ๋๋ Nginx์ ๋ํด ์์๋ด
๋๋ค.
์ฐ์ํํ
ํฌ์ 10๋ถ ํ
์ฝํก ํผ์ผ์ด๋์ ์์์ ๋ณด๊ณ ์์ฝํ์์ต๋๋ค.
์์์ ๋ณด๊ณ ์ค์๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
๊ฐ๋
๊ณผ ๋ฑ์ฅ๋ฐฐ๊ฒฝ
๊ฐ๋
๊ฐ๋ฒผ์ฐ๋ฉด์๋ ๊ฐ๋ ฅํ ํ๋ก๊ทธ๋จ์ ๋ชฉํ๋ก ๊ฐ๋ฐ๋์ด ๋ฏธ๊ตญ์์ ์ด์์ค์ธ ์คํ ์์ค ์น์๋ฒ ํ๋ก๊ทธ๋จ์
๋๋ค.
๋น๋๊ธฐ์ด๋ฒคํธ ๊ธฐ๋ฐ ๊ตฌ์กฐ์ด๋ฉฐ HTTP ์น์๋ฒ์
๋๋ค. ๋ํ ๋ฆฌ๋ฒ์ค ํ๋ก์ ์๋ฒ(Reverse Proxy Server) ๋ง์ ํธ๋ํฝ์์ฒญ์๋ ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋ ฅํ ๋ก๋ ๋ฐธ๋ฐ์(Load balancer)์ญํ ์ ์ํํ๋ ๊ฒ์ผ๋ก ์ ๋ช
ํฉ๋๋ค.
๋ฑ์ฅ ๋ฐฐ๊ฒฝ
- ์น ์๋ฒ์ ์ญ์ฌ ์ํ์น ์๋ฒ๊ฐ ๋ฑ์ฅํ๊ธฐ ์ด์ NCSA HTTPd๊ฐ ์กด์ฌํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ง์ ๋ฒ๊ทธ๊ฐ ์์ด ์ฌ๋ฌ ๊ฐ๋ฐ์๋ค์ด ํฉ์ฌํ์ฌ ๋ฒ๊ทธ๋ฅผ ๊ฐ์ ํ๊ณ ๊ธฐ๋ฅ์ ์ถ๊ฐํด์ ๋ฑ์ฅํ ๊ฒ์ด ์ํ์น ์๋ฒ์
๋๋ค.
- ์ํ์น ์๋ฒ์ ๊ตฌ์กฐ์ ์์ฒญ์ฒ๋ฆฌ ํ๋ฆ
- ์์ฒญ์ ๋ฐ์ ๋๋ง๋ค ํ๋ก์ธ์ค๋ฅผ ์์ฑํ์ฌ ์ปค๋ฅ์
์ ํ ๋น
- ๊ทธ๋ฌ๋, ํ๋ก์ธ์ค ์์ฑํ๋ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํด๋๋ PREFORK๋ผ๋ ๋ฐฉ์์ ํ์ฉ โ ์์ฑํ ๋ชจ๋ ํ๋ก์ธ์ค ํ ๋น์ด ๋๋๋ฉด ํ๋ก์ธ์ค ์ถ๊ฐ ์์ฑ
- ์ด๋ฌํ ๊ตฌ์กฐ์ ์ฅ์ ์ ๋ชจ๋์ ์ถ๊ฐํ์ฌ ์๋ฒ์ ๋น ๋ฅด๊ฒ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์์.
- ์ํ์น ์๋ฒ์ ๋ฌธ์ ์
- 1999๋
๊ฐ์ธ ์ปดํจํฐ์ ๋ณด๊ธ์ผ๋ก ํธ๋ํฝ์ด ๋ง์์ง์ ๋ฐ๋ผ ์๋ฒ์์ ๋์ ์ฐ๊ฒฐํ ์ ์๋ ์ปค๋ฅ์
์ด ์ ํ๋๊ธฐ ์์ํจ. โ C10K(Connection 10000 problem)
- ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ(๋งค ์ฐ๊ฒฐ์ ํ๋ก์ธ์ค ํ ๋น ๋ฐ ์์ฑ), ๋ง์ ๊ธฐ๋ฅ์ผ๋ก ์ธํ ๋ฌด๊ฑฐ์ด ํ๋ก๊ทธ๋จ, Context Switching์ผ๋ก ์ธํ CPU๋ถํ์ ์ฆ๊ฐ.
2004๋
์ด๋ฌํ ์ด์ ๋ก ๊ณต๊ฐ๋์์ผ๋, ์ฌ์ค ์ฌ์ฉํ๋ ๊ณณ์ ๋ง์ด ์์์ต๋๋ค.
ํต์ฌ์ ์ธ ์์ธ์ ์ ํ์์ ์ค๋งํธํฐ์ ๊ณต๊ฐํ๋ฉด์๋ถํฐ ์ธํฐ๋ท์ ์ ๊ทผ์ฑ์ด ์ข์์ ธ ๋์์ ์์๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ๋๊ธฐ์์ํ 2008๋
๋ถํฐ ๋ง์ด ๋์
๋๊ธฐ ์์ํ์ต๋๋ค.
Nginx์ ๊ตฌ์กฐ์ ๊ธฐ๋ฅ
- ์ต์ด์ nginx ์ต์ด์ nginx๋ ์์ฒด ์น์๋ฒ์ด์ง๋ง ์ํ์น ์๋ฒ์ ํจ๊ป ์ฌ์ฉ๋๊ธฐ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค. ์ํ์น ์๋ฒ์ ์๋จ์ ์์นํ์ฌ์ ๋ง์ connection๊ณผ ์ ์ ํ์ผ์ ๋ํ ์์ฒญ์ nginx๊ฐ ์ฒ๋ฆฌํ๊ณ ๋์ ํ์ผ์ ๋ํด์๋ง apache server๋ฅผ ํตํด ์ฒ๋ฆฌํ์ต๋๋ค. ์ด๋ก ์ธํด ์ํ์น ์๋ฒ์ ๋ํ ๋ถํ๋ฅผ ์ค์ผ ์ ์์์ต๋๋ค.
- nginx๋ ์ด๋ป๊ฒ ๋ถํ๋ฅผ ๋ถ์ฐํ ๊น?
- ํด๋ผ์ด์ธํธ ์์ฒญ์ Keep-Alive ๋์ ์ปค๋ฅ์
์ ์์ฑํ๋ค.
- ์ด๋ฌํ ์ปค๋ฅ์
์ ์์ฑ, ์ ๊ฑฐ ๋ฑ๋ฑ์ ํ๋์ ์ด๋ฒคํธ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- CPU๊ฐ์ ๋งํผ์ worker process(์ค๋ ๋๋จ์)๋ฅผ ์์ฑํ๊ณ master process์์ ๊ด๋ฆฌํ๋ค.
- Context switching์ ์ค์ผ ์ ์์.
- ์์ฒญ์์ ๋ฐ์๋ ์ด๋ฒคํธ๋ฅผ Queueํ์์ผ๋ก worker process์ ๋ฃ์ด๋๊ณ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋๊ธฐํ๋ค.
- ์ด๋ฌํ ๋ฐฉ์์ ์ฑ์ฉํ๋ฉด ์ํ์น ์๋ฒ์ ๋ฐฉ์๊ณผ ๋ฌ๋ฆฌ ํ๋ก์ธ์ค๊ฐ ์ฌ์ง ์๊ณ ์ผ์ ํด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฉํ ์ ์๋ค.
- ๋จ, Event๊ฐ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ ์์
์ ๊ฒฝ์ฐ Thred Pool์๊ฒ ์์ํ๊ณ ๋ค์ Event๋ฅผ ์ฒ๋ฆฌํ๋ค.
- nginx์ ์ฅ๋จ์
- ์ฅ์
- ๋์ ์ปค๋ฅ์
์ ์ต์ 10๋ฐฐ ์ฆ๊ฐ(์ผ๋ฐ์ ์ผ๋ก๋ 100~1000๋ฐฐ ์ฆ๊ฐ)
- ๋์ผ ์ปค๋ฅ์
์ ์๋ 2๋ฐฐ ํฅ์
- ์ฌ์ฉ์๊ฐ ์ค์ ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ด์์ค์ ๋ฐ์ํ ์ ์์. (๋์ ์ค์ )
- ์ค์ ์ฌํญ์ ๋ณ๊ฒฝํ ์์ปค ํ๋ก์ธ์ค๋ฅผ ์์ฑํ์ฌ ์๋ก์ด ์ด๋ฒคํธ๋ฅผ ์์ฉํ๊ณ , ๊ธฐ์กด์ ์์ปคํ๋ก์ธ์ค๋ ํ ๋น๋ ์ด๋ฒคํธ๋ค์ ๋ชจ๋ ์ฒ๋ฆฌํ ์ข
๋ฃ๋๋ค.
- ๋จ์
- ์ด๋ฌํ ๊ตฌ์กฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ๊ธฐ๋ฅ์ ์ง์ ๋ชจ๋์ ๋ง๋๋ ๊ฒ์ ์ด๋ ต๋ค. โ ์ด ๋ถ๋ถ์ ํ ์ง์์ผ๋ก ์ดํด๊ฐ ์๋๋ค์โฆ
Nginx์ ๊ธฐ๋ฅ
- SSL ํฐ๋ฏธ๋ค์ด์
- https ์ปค๋ฅ์
์ ๋ณตํธํํ์ฌ http๋ก ๋ณํํ์ฌ ์๋ฒ์ ์ ๋ฌํจ์ผ๋ก์จ ์๋ฒ์ ๋ณตํธํํ๋๋ฐ ํ์ํ ์ฐ์ฐ์ ๋ถํ๋ฅผ ๊ฐ์์์ผ์ค๋๋ค.
- ์บ์ฑ
- nginx์๋ฒ๋ฅผ ํด๋ผ์ด์ธํธ์ ๊ฐ๊น๊ฒ ๋ฐฐ์นํ์ฌ ์ธ๋ฉ๋ชจ๋ฆฌ๋ฐฉ์์ผ๋ก ์ง์ฐ์๊ฐ์ ์ค์ด๊ณ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
- HSTS
- CORS ์ฒ๋ฆฌ
- TCP/UDP ์ปค๋ฅ์
๋ถํ ๋ถ์ฐ
- HTTP/2
์ฐธ๊ณ