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
(๋น๋๊ธฐ ์ฒ๋ฆฌ, ๋
ผ๋ธ๋กํน)
'Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Web] HTTP ์ํ ์ฝ๋ (0) | 2024.12.01 |
---|---|
[Web] HTTP ๋ฉ์๋ (0) | 2024.12.01 |
[Web] RESTful API ์ค๊ณ ์์น (0) | 2024.10.10 |
[Web] ์ธ์ (Session)๊ณผ ์ฟ ํค(Cookie) (0) | 2024.07.30 |
[Web] ์๋ฐฉํฅ ํต์ : Polling, Websocket (0) | 2024.07.23 |