Hamutaro - Hamtaro 4

Web

[Web] Nginx

carsumin 2025. 1. 19. 18:12
Nginx
  • ์ฃผ๋กœ ์›น ์„œ๋ฒ„ (Web Server) ๋˜๋Š” ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ (Reverse Proxy) ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด

 

Nginx ์—ญํ• 

 

1. ์›น ์„œ๋ฒ„ ์—ญํ• 

์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— www.example.com ์ž…๋ ฅํ•˜๋ฉด,

  • Nginx๋Š” HTML, CSS, JS ๊ฐ™์€ ์ •์  ํŒŒ์ผ์„ ์ฝ์–ด์„œ ์‘๋‹ตํ•ด์ฃผ๋Š” ์—ญํ• 
  • Apache ๋ณด๋‹ค ๋” ๋น ๋ฅด๊ณ  ๊ฐ€๋ฒผ์›€

2. ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์—ญํ• 

์‚ฌ์šฉ์ž -> Nginx -> ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ (Spring, Node.js ๋“ฑ)
  • ์‚ฌ์šฉ์ž๋Š” Nginx์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ 
  • Nginx๊ฐ€ ๊ทธ ์š”์ฒญ์„ ๋‚ด๋ถ€์˜ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์— ์ „๋‹ฌํ•ด์คŒ
  • ๋ฐฑ์—”๋“œ๊ฐ€ ์‘๋‹ตํ•˜๋ฉด ๋‹ค์‹œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋Œ๋ ค์คŒ

์ฆ‰, ์ค‘๊ฐ„์—์„œ ํŠธ๋ž˜ํ”ฝ์„ ์ค‘๊ณ„ํ•ด์ฃผ๋Š” ์—ญํ• 

 

3. ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ์—ญํ• 

  • ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ๋‚˜๋ˆ ์ฃผ๋Š” ์—ญํ• 
์‚ฌ์šฉ์ž ์š”์ฒญ
   ↓
Nginx (๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ)
  โ”œโ”€> ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ 1
  โ”œโ”€> ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ 2
  โ””โ”€> ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ 3

 

 

Nginx ํ•„์š”์„ฑ
  • ์ •์  ํŒŒ์ผ ์„œ๋น™
    • ์ด๋ฏธ์ง€, JS, CSS ๊ฐ™์€ ํŒŒ์ผ์„ ๋น ๋ฅด๊ฒŒ ์‘๋‹ตํ•จ
  • ๋ณด์•ˆ ๊ฐ•ํ™”
    • ์™ธ๋ถ€์š”์ฒญ์„ ๋ฐ”๋กœ ๋ฐฑ์—”๋“œ๋กœ ๋ณด๋‚ด์ง€ ์•Š๊ณ  Nginx๊ฐ€ ์ค‘๊ฐ„์— ๋ฐฉ์–ด๋ง‰ ์—ญํ• 
  • ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ
    • ์—ฌ๋Ÿฌ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์— ํŠธ๋ž˜ํ”ฝ์„ ๋‚˜๋ˆ ์ฃผ์–ด ์„œ๋น„์Šค ์•ˆ์ •์„ฑ์ด ์ฆ๊ฐ€
  • SSL (HTTPS) ์ฒ˜๋ฆฌ
    • HTTPS ์ธ์ฆ์„œ๋ฅผ Nginx์—์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋ฐฑ์—”๋“œ๋Š” ๊ฐ„๋‹จํ•ด์ง
  • ์บ์‹ฑ ๊ธฐ๋Šฅ
    • ์‘๋‹ต์„ ์บ์‹ฑํ•ด์„œ ์†๋„ ํ–ฅ์ƒ, ์„œ๋ฒ„ ๋ถ€ํ•˜ ๊ฐ์†Œ

 

Nginx ์‚ฌ์šฉ์˜ˆ์‹œ
  • ์˜ˆ๋ฅผ ๋“ค์–ด Spring ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ EC2์—์„œ ์šด์˜ํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ
  • ์™ธ๋ถ€ ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผ -> Nginx๊ฐ€ ๋จผ์ € ๋ฐ›์Œ
    • ์ •์  ํŒŒ์ผ์€ ์ง์ ‘ ์‘๋‹ต
    • API ์š”์ฒญ์€ Spring ์„œ๋ฒ„๋กœ ์ „๋‹ฌ
    • SSL ์ธ์ฆ๋„ Nginx ์—์„œ ์ฒ˜๋ฆฌ

-> ์ „์ฒด ํŠธ๋ž˜ํ”ฝ์„ ์ปจํŠธ๋กคํ•˜๋Š” Gateway ์—ญํ• 

 

 

Nginx ๊ตฌ์กฐ
  • Nginx๋Š” ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์˜ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘
  • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋กœ๋„ ์ˆ˜์ฒœ๊ฐœ์˜ ์š”์ฒญ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

1. ๋งˆ์Šคํ„ฐ ํ”„๋กœ์„ธ์Šค (Master Process)

  • ์„ค์ • ํŒŒ์ผ (nginx.conf)์„ ์ฝ๊ณ  ์ „์ฒด ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌ
  • ์ง์ ‘ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜์ง„ ์•Š์Œ
  • ์—ญํ•  : ์„ค์ • ๋กœ๋”ฉ, Worker ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ, ์žฌ์‹œ์ž‘, ์ข…๋ฃŒ

2. ์›Œ์ปค ํ”„๋กœ์„ธ์Šค (Worker Processes)

  • ์‹ค์ œ๋กœ HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฃผ์ฒด
  • ๊ฐ ์š”์ฒญ์€ ์ด๋ฒคํŠธ ๋ฃจํ”„๋กœ ์ฒ˜๋ฆฌ๋จ
  • CPU ์ฝ”์–ด ์ˆ˜์— ๋งž๊ฒŒ ์—ฌ๋Ÿฌ๊ฐœ ๋„์šธ ์ˆ˜ ์žˆ์Œ
CPU 4๊ฐœ -> worker_processes 4;

 

* ํ•˜๋‚˜์˜ ์›Œ์ปค๋Š” ๋™์‹œ์— ์ˆ˜์ฒœ๊ฐœ์˜ ์š”์ฒญ์„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ (๋น„๋™๊ธฐ + ๋…ผ๋ธ”๋กœํ‚น I/O)

 

3. ์ด๋ฒคํŠธ ๋ฃจํ”„ (Event Loop)

  • ๊ฐ ์›Œ์ปค ํ”„๋กœ์„ธ์Šค๋Š” ์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘
  • ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ -> ์†Œ์ผ“ ์ด๋ฒคํŠธ ๊ฐ์ง€
  • ์ฝ๊ธฐ/์“ฐ๊ธฐ ์ž‘์—… -> ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋ก
  • I/O ์ž‘์—… ์ค‘ ๋ธ”๋กœํ‚น์—†์ด ๋‹ค๋ฅธ ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

4. ๋ชจ๋“ˆ (Modules)

  • Core Modules : ๊ธฐ๋ณธ ๊ธฐ๋Šฅ (HTTP, ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋“ฑ)
  • Optional Modules : ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ, ์บ์‹ฑ, SSL, ์••์ถ• ๋“ฑ
+-----------------------------+
|        Master Process       | ← ์„ค์ • ์ฝ๊ณ , ์›Œ์ปค ๊ด€๋ฆฌ
+-----------------------------+
            |
  +---------+---------+
  |         |         |
  v         v         v
+------------+  +------------+
| Worker 1   |  | Worker 2   |  ... → ์‹ค์ œ ์š”์ฒญ ์ฒ˜๋ฆฌ
+------------+  +------------+
      |               |
      v               v
  Event Loop      Event Loop
    (๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ, ๋…ผ๋ธ”๋กœํ‚น)