Skip to content

Apache vs Nginx

FloralLife edited this page Nov 7, 2021 · 1 revision

Aphche

MPM(Multi Processing Module) ์•„ํ‚คํ…์ณ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ์ˆ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ ์žˆ๋‹ค.

  1. Server Socket์œผ๋กœ ์š”์ฒญ A๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์Šค๋ ˆ๋“œ๋ฅผ ํ• ๋‹นํ•ด์ค€๋‹ค.
  2. ์Šค๋ ˆ๋“œ๋Š” ๊ทธ ์†Œ์ผ“์„ ๊ฐ€์ง€๊ณ  I/O ์ž‘์—… ๋“ฑ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  3. ์ด ์™€์ค‘์— ์„œ๋ฒ„ ์†Œ์ผ“์œผ๋กœ ์š”์ฒญ B๊ฐ€ ๋“ค์–ด๋ชจ๋ฉด context switching์ด ์ผ์–ด๋‚œ๋‹ค.
  4. ์ƒˆ๋กœ ๋“ค์–ด์˜จ ์š”์ฒญ์— ์Šค๋ ˆ๋“œ๋ฅผ ๋ฐฐ๋ถ„ํ•˜๊ณ  ๋˜ ์ด ์†Œ์ผ“์„ ๊ฐ€์ง€๊ณ  I/O ์ž‘์—…์„ ์ˆ˜ํ–‰ํžŒ๋‹ค.
  5. ๊ทธ๋Ÿฌ๋ฉด์„œ A์˜ ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ค‘๊ฐ„์— ๋‹ค์‹œ context switchingํ•˜๊ณ , ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ๋‹ค์‹œ B์˜ ์ž‘์—…์„ ํ•˜๋ ค๊ณ  context switching์„ ํ•˜๋ฉฐ I/O ์ž‘์—…์„ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•œ๋‹ค.

MPM

  • prefork : ์š”์ฒญ์— ๋Œ€ํ•ด default ๊ฐœ์ˆ˜ ๋งŒํผ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๊ณ  ์š”์ฒญ์ด ๋งŽ์œผ๋ฉด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•ด์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • worker : ๋™์‹œ์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์›ํ•œ๋‹ค. ์ด๊ฒƒ์€ Apache๊ฐ€ ์ข€ ๋” ํšจ์œจ์ ์ด๊ณ  ํ™•์žฅ๊ฐ€๋Šฅํ•˜๋„๋ก ๋•๋Š”๋‹ค.
  • event : mpm_worker์™€ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜์ง€๋งŒ ์ตœ๊ทผ ๋“ฑ์žฅํ•œ ์›น ๊ด€๋ จ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์„ ์œ„ํ•œ keep-alive ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.
๐Ÿ’ก ํ”„๋กœ์„ธ์Šค ์ค‘์‹ฌ์˜ ์ ‘๊ทผ๋ฒ•, ๊ฐ ์š”์ฒญ์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

โ‡’ ๋™์‹œ ์ ‘์† ์š”์ฒญ์ด ๋งŽ์•„์งˆ์ˆ˜๋ก ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ ์ƒ์„ฑ๋น„์šฉ์ด ๋“ค๊ณ , ๋Œ€์šฉ๋Ÿ‰ ์š”์ฒญ์•  ๋Œ€ํ•œ ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.

Nginx

ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์Šค๋ ˆ๋“œ๋ผ๋Š” ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ด๋ฒคํŠธ ๊ฐœ๋…์œผ๋กœ ์ ‘๊ทผํ•œ๋‹ค.

  1. Reactor๋Š” event๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์•Œ๋งž๋Š” ํ•ธ๋“ค๋Ÿฌ๋กœ dispatch ํ•ด์ค€๋‹ค.

  2. ํ•ธ๋“ค๋Ÿฌ๋Š” dispatch๋œ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

    โ€ป reator : ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰๋˜๋ฉฐ ๋ฐœ์ƒํ•œ I/O ์ด๋ฒคํŠธ๋Š” dispatching๋˜์–ด ํ•ด๋‹น ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๊ธฐ๋กœ ๋ณด๋‚ด ์ฒ˜๋ฆฌํ•œ๋‹ค.

Event-Driven ๋ฐฉ์‹์€ ์ž‘์—…์„ ํ•˜๋‹ค๊ฐ€ I/O, ์†Œ์ผ“ read/write ๋“ฑ CPU๊ฐ€ ๊ด€์—ฌํ•˜์ง€ ์•Š๋Š” ์ž‘์—…์ด ์‹œ์ž‘๋˜๋ฉด ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์ง„ํ–‰์ค‘์ธ I/O๋“ฑ์˜ ์ž‘์—…๋“ค์ด ๋๋‚˜๋ฉด ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๊ทธ ๋‹ค์Œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.

  • Event-Driven ๋ฐฉ์‹์œผ๋กœ ํ•œ๊ฐœ์˜ ๊ณ ์ •๋œ ํ”„๋กœ์„ธ์Šค๋งŒ ์ƒ์„ฑํ•œ๋‹ค.
  • ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋Š” ์Šค๋ ˆ๋“œ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ํ”„๋กœ์„ธ์Šค ๋‚ด๋ถ€์—์„œ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ๋™์‹œ ์ ‘์† ์š”์ฒญ์ด ๋งŽ์•„๋„ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ ์ƒ์„ฑ ๋น„์šฉ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
๐Ÿ’ก ์ด๋ฒคํŠธ ์ค‘์‹ฌ์˜ ์ ‘๊ทผ๋ฒ•, ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ์—์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌ

Node.js์— Nginx๋ฅผ ์•ž๋‹จ์œผ๋กœ ๋‘˜ ๊ฒฝ์šฐ ์ด์ 

๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์˜ ์ทจ์•ฝ์ ์— ์˜ํ•œ ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

Apache vs Nginx

  • Apache๋Š” ์•ˆ์ •์„ฑ, ํ™•์žฅ์„ฑ, ํ˜ธํ™˜์„ฑ์ด ์ข‹๋‹ค.
  • Nginx๋Š” ์„ฑ๋Šฅ์ด ์šฐ์„ธํ•˜๋‹ค.
  • Apache๊ฐ€ ์—ญ์‚ฌ๊ฐ€ ์˜ค๋ž˜๋ฌ๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ณณ๋„ ์•„์ง๊นŒ์ง€๋Š” ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— nginx์— ๋น„ํ•ด ๋ชจ๋“ˆ์ด ๋‹ค์–‘ํ•˜๋‹ค.
  • nginx๋Š” ์ƒ์Šน์„ธ, Apache๋Š” ํ•˜๋ฝ์„ธ์ด๋‹ค.
์ถœ์ฒ˜ : [https://kinsta.com/blog/nginx-vs-apache/](https://kinsta.com/blog/nginx-vs-apache/)

๐Ÿ“– ๊ฐœ๋ฐœ๋ฌธ์„œ

๐Ÿšฅ ๊ทœ์น™

๐Ÿค” ์Šคํ”„๋ฆฐํŠธ ํšŒ์˜

๐Ÿ“” ํ•™์Šต

๐Ÿ•™ ๋ฐ์ผ๋ฆฌ ์Šคํฌ๋Ÿผ

๐Ÿ’ญ ํšŒ๊ณ ๋ก

๐Ÿ‘จโ€๐Ÿ‘ฆ ๋ฉ˜ํ† ๋ง

๋ฐ๋ชจ์˜์ƒ

Clone this wiki locally