๐Ÿš€ Nginx: ์™œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

๋„๋‘๋งจยท2025๋…„ 6์›” 2์ผ

๊ณต๋ถ€

๋ชฉ๋ก ๋ณด๊ธฐ
13/23

ํ”ผ์ผ€์ด์˜ Nginx ๋ฐœํ‘œ๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.
"์–ด๋–ป๊ฒŒ ์“ฐ๋Š”๊ฐ€"๋ณด๋‹ค "์™œ ์จ์•ผ ํ•˜๋Š”๊ฐ€"์— ์ง‘์ค‘ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.


๐Ÿงฉ Nginx๋ž€ ๋ฌด์—‡์ธ๊ฐ€

  • ์›น ์„œ๋ฒ„ + ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ + ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ + HTTP ์บ์‹œ๋กœ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด
  • ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ๋กœ ์„ค๊ณ„๋จ
  • ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ๊ณผ ๊ฐ€๋ฒผ์›€์œผ๋กœ ์›น์„œ๋ฒ„ ์ ์œ ์œจ 1์œ„

๐Ÿ”ฅ Apache vs Nginx

Apache์˜ ๊ตฌ์กฐ

  • 1995๋…„ NCSA HTTPd ๊ธฐ๋ฐ˜์œผ๋กœ ํƒ„์ƒ
  • ์š”์ฒญ๋งˆ๋‹ค ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ตฌ์กฐ
  • ์š”์ฒญ ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋ชจ์™€ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ์ฆ๊ฐ€

Apache ๊ตฌ์กฐ


Prefork ๋ฐฉ์‹

  • ์š”์ฒญ ์ „์— ๋ฏธ๋ฆฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•ด๋†“์Œ
  • ๋ชจ๋“  ์š”์ฒญ์„ ๋™๊ธฐ์  ํ”„๋กœ์„ธ์Šค ๊ธฐ๋ฐ˜์œผ๋กœ ์ฒ˜๋ฆฌ
  • UNIX ๊ณ„์—ด OS๊ฐ€ ๋„คํŠธ์›Œํฌ ์ปค๋„ฅ์…˜์„ ํ˜•์„ฑํ•˜๋Š” ๋ชจ๋ธ์„ ๊ทธ๋Œ€๋กœ ์ ์šฉํ•œ ๊ฒƒ

Prefork


ํ™•์žฅ์„ฑ์€ ์ข‹์ง€๋งŒ...

  • ๋ชจ๋“ˆ ๊ฐœ๋ฐœ์€ ์‰ฌ์›€
  • ํ•˜์ง€๋งŒ ๊ตฌ์กฐ์  ํ•œ๊ณ„๋กœ ๋™์‹œ ์ปค๋„ฅ์…˜ ์ฒ˜๋ฆฌ์— ์•ฝํ•จ
  • ๊ฒฐ๊ตญ C10K ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ฒŒ ๋จ

โš ๏ธ C10K ๋ฌธ์ œ์™€ Nginx์˜ ๋“ฑ์žฅ

  • Connection 10,000 Problem
  • Apache๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณ„์† ์ƒ์„ฑํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ํญ๋ฐœ
  • Keep-Alive(ํ•ด๋‹น ์˜ต์…˜์— ์ ํžŒ ์‹œ๊ฐ„๋งŒํผ ์ปค๋„ฅ์…˜ ์œ ์ง€) ์ปค๋„ฅ์…˜์ด ๋งŽ์•„์งˆ์ˆ˜๋ก Apache๋Š” ํ•œ๊ณ„์— ๋„๋‹ฌ

Nginx์˜ ํ•ด๊ฒฐ ์ „๋žต

  • 2004๋…„ ๋“ฑ์žฅ
  • Apache ์•ž๋‹จ์— ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋กœ ๋ฐฐ์น˜
  • ์ •์  ํŒŒ์ผ ์ฒ˜๋ฆฌ๋Š” Nginx๊ฐ€ ๋‹ด๋‹น
  • Apache๋Š” ๋™์  ์š”์ฒญ ์ฒ˜๋ฆฌ๋งŒ ์ „๋‹ด

โš™๏ธ Nginx ์•„ํ‚คํ…์ฒ˜

Event-driven ๋ชจ๋ธ

  • ๋งˆ์Šคํ„ฐ ํ”„๋กœ์„ธ์Šค: ์„ค์ • ๋กœ๋“œ ๋ฐ ์›Œ์ปค ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ
  • ์›Œ์ปค ํ”„๋กœ์„ธ์Šค: ์š”์ฒญ ์ฒ˜๋ฆฌ, ์ปค๋„ฅ์…˜ ๊ด€๋ฆฌ

Nginx ๊ตฌ์กฐ

  • ๋„ค๋ชจ ์นธ๋“ค์ด ํ ์•ˆ์— ๋ณด๋ฉด ์ปค๋„ฅ์…˜์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ด๋ฒคํŠธ๋กœ ์ฑ„์›Œ์ ธ ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Œ
  • ์ด๋Ÿฌ๋ฉด ์›Œ์ปค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‰ฌ์ง€ ์•Š๊ณ  ๊ณ„์†ํ•ด์„œ ์ผ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ
  • CPU์˜ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ์‚ฌ์šฉ์„ ์ค„์ž„

์ปค๋„ฅ์…˜ ์ฒ˜๋ฆฌ ๋ฐฉ์‹

  • ์ด๋ฒคํŠธ ํ ๊ธฐ๋ฐ˜
  • ์›Œ์ปค๋Š” ์ปค๋„ฅ์…˜ ํ•˜๋‚˜์— ๊ณ ์ •๋˜์ง€ ์•Š์Œ
  • ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ

๊ธด ์ž‘์—…์€?

  • ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ ํ’€์—์„œ ์ฒ˜๋ฆฌ
  • ์›Œ์ปค๋Š” ๋‹ค์Œ ์ด๋ฒคํŠธ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

๐Ÿ˜ข Nginx ๋‹จ์ 

  • ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ชจ๋“ˆ์„ ์ง์ ‘ ๋งŒ๋“ค๊ธฐ๊ฐ€ ๊นŒ๋‹ค๋กœ์›€
  • ํ•˜์ง€๋งŒ ๋‹จ์ ์— ๋น„ํ•ด ์žฅ์ ์ด ๋ช…ํ™•ํ•ด ๋งŽ์ด ์‚ฌ์šฉํ•จ

๐Ÿ”„ ๋™์  ์„ค์ • ๋ณ€๊ฒฝ

  • ์„ค์ • ๋ณ€๊ฒฝ ์‹œ Nginx๋ฅผ ์™„์ „ํžˆ ์ข…๋ฃŒํ•  ํ•„์š” ์—†์Œ
  • ๋งˆ์Šคํ„ฐ๊ฐ€ ์ƒˆ๋กœ์šด ์„ค์ •์œผ๋กœ ์›Œ์ปค ๊ต์ฒด
  • ๊ธฐ์กด ์›Œ์ปค๋Š” ๊ธฐ์กด ์ปค๋„ฅ์…˜์„ ์ฒ˜๋ฆฌํ•œ ๋’ค ์ข…๋ฃŒ

โœ… ์‹ค์‹œ๊ฐ„ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ
โœ… ์„œ๋น„์Šค ์ค‘๋‹จ ์—†์ด ์„œ๋ฒ„ ํ™•์žฅ ๊ฐ€๋Šฅ


๐Ÿ“ˆ Nginx๊ฐ€ ์ธ๊ธฐ ์žˆ๋Š” ์ด์œ 

ApacheNginx
๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ๊ตฌ์กฐ๊ฐ€ ๋‹จ์ˆœํ•˜๊ณ  ๊ฐ€๋ฒผ์›€
ํ•˜์œ„ ํ˜ธํ™˜์„ฑ ์ข‹์Œ๋™์‹œ ์ปค๋„ฅ์…˜ ์ฒ˜๋ฆฌ์— ๊ฐ•ํ•จ
์œˆ๋„์šฐ ํ˜ธํ™˜ ์šฐ์ˆ˜๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜์—์„œ ์„ฑ๋Šฅ ์šฐ์ˆ˜
  • 2008๋…„๋ถ€ํ„ฐ ์ ์œ ์œจ ์—ญ์ „ ์‹œ์ž‘
  • ํ˜„์žฌ๋Š” ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์‹ค์ƒ ํ‘œ์ค€

๐Ÿ›  ์‹ค์ „ ํ™œ์šฉ: ์–ด๋””์— ์“ฐ๋ฉด ์ข‹์„๊นŒ?

1. SSL ํ„ฐ๋ฏธ๋„ค์ด์…˜

  • ํด๋ผ์ด์–ธํŠธ์™€๋Š” HTTPS, ์„œ๋ฒ„์™€๋Š” HTTP
  • ์„œ๋ฒ„์˜ ๋ณตํ˜ธํ™” ๋ถ€ํ•˜ ์ œ๊ฑฐ

2. ์ •์  ๋ฆฌ์†Œ์Šค ์บ์‹ฑ

  • CDN ๋˜๋Š” ์—ฃ์ง€ ์„œ๋ฒ„์ฒ˜๋Ÿผ ํ™œ์šฉ
  • ์‘๋‹ต ์†๋„ ๊ฐœ์„ , ์„œ๋ฒ„ ๋ถ€ํ•˜ ๊ฐ์†Œ

3. CORS ์ฒ˜๋ฆฌ / HSTS / HTTP/2 ์ง€์›

  • ๋ณด์•ˆ ์ •์ฑ… ์ฒ˜๋ฆฌ๋„ Nginx๊ฐ€ ๊ฐ€๋Šฅ

โœ… ์ •๋ฆฌ

  • Nginx๋Š” ๋™์‹œ ์ปค๋„ฅ์…˜ ์ฒ˜๋ฆฌ์— ๊ฐ•ํ•œ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์›น ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.
  • Apache๋Š” ๋ชจ๋“ˆ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์ด ๊ฐ•์ ์ด์ง€๋งŒ, ๊ตฌ์กฐ์  ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ˜„๋Œ€ ์›น ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” Nginx๋ฅผ ์ •์  ๋ฆฌ์†Œ์Šค ์ฒ˜๋ฆฌ + ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ + ๋ถ€ํ•˜ ๋ถ„์‚ฐ์šฉ์œผ๋กœ ์ ๊ทน ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.

๐ŸŽฅ ์ฐธ๊ณ  ์ž๋ฃŒ

๐Ÿ“บ ํ”ผ์ผ€์ด์˜ Nginx

0๊ฐœ์˜ ๋Œ“๊ธ€