-
Notifications
You must be signed in to change notification settings - Fork 2
๐ ๋์ปค์ nginx์ ์ฌ์ฉ๊ธฐ
๋ก์ปฌ์์ ๋์ปค๋ฅผ ์คํ์ํค๊ณ ์ฌ๋ฌ๋ฐฉ๋ฉด์์ ๋๋ฒ๊น ์ ์งํํ๋ ค๋ค๋ณด๋ ๋ด๊ฐ ์์ง ์ฌ๋ฌ ์ปจํ ์ด๋๋ค์ ํธ๋ํฝ์ ๊ด๋ฆฌํด์ฃผ๋ nginx์ ์ ํํ ํ๋ฆ์ ํ์ ํ์ง ๋ชปํ๋ค๋ ์๊ฐ์ ํ๊ฒ ๋์๋ค. ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๋ฌ ์ ๋ณด๋ฅผ ์์นญํ๋ค๋ณด๋ ์กฐ๊ธ์ ํ๋ฆ์ ์๊ฒ ๋์๋๋ฐ ์ ๋ฆฌ์ฐจ ๋ฌธ์๋ก ๋ง๋ค๊ธฐ๋ก ํ๋ค
์ผ๋จ ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ํฐ ์ปจํ ์ด๋๋ ์ด 3๊ฐ์ด๋ค
-
server container
: ๋ฐฑ์๋ ์๋ฒ -
client contianer
: ํด๋ผ์ด์ธํธ ์ฝ๋ ์๋น์ ์งํํ๋ ์ปจํ ์ด๋ -
nginx container
: ํธ๋ํฝ์ ์๋ง๊ฒ ์ ๋ฌํ๋ ์ปจํ ์ด๋ -
redis container
: ๋ก์ปฌ์์๋ ํ์ํ๋ฐ ncloud ์์์๋ ์ด๋ฏธ ๋์๊ฐ๊ณ ์๋ ์ธ์คํด์ค๊ฐ VPC ์์ ๋ค์ด๊ฐ ์์์ผ๋ก ๋ณ๋๋ก ํ์ํ์ง๋ ์๋ค
์ฐ์ ์๋ฉด ์ข์๊ฒ ๋ฐ๋ก ๋ค์ค Docker container๋ค์ ๊ด๋ฆฌํ๋ docker compose ๋ด๋ถ์์ ๋คํธ์ํฌ ํธ๋ํฝ์ ๊ด๋ฆฌ ํ๋ ๋ฐฉ๋ฒ์ด๋ค
์ฐ์ docker compose๋ฅผ ์์๋ก ๋ค๋ฉด
services:
nginx:
ports:
- "80:80" # ์ธ๋ถ ๋
ธ์ถ
backend:
expose:
- "3000" # ๋ด๋ถ ๋คํธ์ํฌ์๋ง ๋
ธ์ถ
database:
expose:
- "5432" # ๋ด๋ถ ๋คํธ์ํฌ์๋ง ๋
ธ์ถ
networks:
default: # ์๋์ผ๋ก project-name_default ๋คํธ์ํฌ ์์ฑ
driver: bridge
์๋ฐ์์ผ๋ก ๊ฐ ํ๋ก์ ํธ๋ง๋ค ํ๋์ compose ํ์ผ์์์ ์ปจํ ์ด๋๋ผ๋ฆฌ์ ํต์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋ช ์ํ ๊ฒ์ ๋ณผ ์๊ฐ ์๋ค
๊ฐ์ฅ ๋์ฌ๊ฒจ๋ด์ผํ๋ ๊ฒ์ ports์ expose, ๊ทธ๋ฆฌ๊ณ ๊ฐ ์ปจํ ์ด๋ ์ด๋ฆ์ ์ญํ ์ด๋ค
-
ports
: ํธ์คํธ ๋จธ์ (์ธ๋ถ)์ 80ํฌํธ๋ก ๋ค์ด์จ ์์ฒญ์ ์ปจํ ์ด๋ ๋ด๋ถ์ 80ํฌํธ๋ก ํฌ์๋ฉํ๋ค๋ ์๋ฏธ
graph LR
External[์ธ๋ถ]
Host[ํธ์คํธ ๋จธ์ <br/>localhost:80]
Container[Nginx ์ปจํ
์ด๋<br/>๋ด๋ถ ํฌํธ 80]
External -->|"domain.com:80"| Host
Host -->|ํฌ์๋ฉ| Container
style Host fill:#f9f,stroke:#333
style Container fill:#bbf,stroke:#333
-
expose
: ๋์ปค ๋คํธ์ํฌ ๋ด๋ถ์์ ๊ฐ ์ปจํ ์ด๋๊ฐ ๋ ธ์ถํ๋ ํฌํธ ๋ฒํธ. ํด๋น ํฌํธ ๋ฒํธ์ ๊ฐ ์ปจํ ์ด๋์ ์ฃผ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ํต์ ํ๋ค - ๋์ปค ์ปจํ ์ด๋ ์ด๋ฆ: ๋์ปค ์ปจํ ์ด๋ ์ด๋ฆ ์์ฒด๊ฐ ์๋์ผ๋ก DNS ์ด๋ฆ์ด ๋๊ธฐ์ ํด๋น ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์์ฒญ์ ๋ณด๋ผ ์ ์๋ค
์ด๊ฐ์ ๋์ปค์ ํน์ฑ์ ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก nginx ์ค์ ์ด๋ค
์ฐ๋ฆฌ ํ์์ ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ nginx๋ค
upstream backend {
server server:3000;
}
server {
listen 80;
# ๊ณตํต ํค๋ ์ค์
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
location / {
proxy_pass http://client:5173;
}
location /api {
proxy_pass http://backend;
}
}
์ด์ค ์ค์ํ๊ฒ ๋ด์ผํ๋ ๋ถ๋ถ์ ํธ๋ํฝ ๊ด๋ฆฌ์์๋ ์ญ์๋ proxy_pass
๋ค
- ์๊น ๋งํ๋ฏ์ด ์ผ๋จ ๊ธฐ๋ณธ์ ์ผ๋ก 80์์ ์ธ๋ถ ๋ธ๋ผ์ฐ์ ์ ์์ฒญ์ ๋ฐ์์จ๋ค.
- ๊ทธ ์ดํ ๊ฐ๊ฐ์ ์์ฒญ์ ๊ดํ์ฌ location์์ ์ง์ ํ ํจํด๊ณผ ๋ง๋ ์์ฒญ์ ์์๋ค๊ฐ ์ ์ํ DNS+ํฌํธ ์๋ค๊ฐ ๊ทธ๋๋ก ์ ๋ฌ์ ํ๋ ๊ฐ๋ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค
- ์๋ฅผ ๋ค์ด ์์ฒญ๋ฌธ์
http://mydomain.com/api/users
์ด๋ฐ ์์ผ๋ก ๋ค์ด์จ ์์ฒญ์ proxy_pass๋ฅผ ํตํ์ฌhttp://server:3000
์ผ๋ก ์ ๋ฌ์ด ๋๋ค โ ์์ ๋งํ๋ฏ์ด container name ์์ฒด๊ฐ DNS๊ฐ ๋๋๊ฒ ์ฌ๊ธฐ์ ๋์จ๋ค!!!!!
์ฐ์ ๋ธ๋ผ์ฐ์ ์์ ์์ฒญ์ ๋ณด๋ผ๋์๋ ํฌ๊ฒ IP ์ฃผ์์ ํฌํธ ๋๋ฒ๊ฐ ํ์ํ๋ค
- IP ์ฃผ์๋ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅธ๋ฐ
- ๊ฐ๋ฐ ํ๊ฒฝ์ผ ๊ฒฝ์ฐ: localhost๋ก ๋ํดํธ ์ค์
- ๋ฐฐํฌ ํ๊ฒฝ์ผ ๊ฒฝ์ฐ: cloud instance์ public ip๋ก ์ค์
- ํฌํธ ๋๋ฒ ๋ํ ์์ฒญ์ ๋ฐ๋ผ ๋ํดํธ๋ก ์ค์ ์ด ๋์ด์๋ค (๋ธ๋ผ์ฐ์ ์ ์
๋ ฅ์ ํ์ง ์์๋ ๋จ)
- http: 80
- https: 443
ํด๋น ์ฃผ์๋ก ์์ฒญ์ ๋ณด๋ผ์, docker ํ๊ฒฝ์์๋ ์ด๋ฏธ ports 80:80
์ค์ ์ ๊ธฐ๋ฐ์ผ๋ก ํธ์คํธ๋จธ์ ์ 80 ํฌํธ์ nginx์ 80 ํฌํธ๊ฐ ๋์ผ์ ๋์ด์๋ค
์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ด์จ ์์ฒญ์ default.d
์์ ์ค์ ํ proxy_pass
์ ์๋ง๊ฒ ๋ฐฐ๋ถ์ด ๋๋ ๊ณผ์ ์ ๊ฑฐ์น๋ค
graph TD
Browser[์ธ๋ถ ๋ธ๋ผ์ฐ์ ]
subgraph "ํธ์คํธ ๋จธ์ (EC2/๋ด ์ปดํจํฐ)"
HostPort[ํธ์คํธ ํฌํธ:80]
subgraph "Docker Network"
subgraph "์ธ๋ถ์์๋ 80ํฌํธ๋ง ์ ๊ทผ ๊ฐ๋ฅ"
Nginx[Nginx:80]
end
subgraph "๋ด๋ถ ๋คํธ์ํฌ"
Client[Client:5173]
Backend[Backend:3000]
end
Nginx -->|5173| Client
Nginx -->|3000| Backend
end
end
Browser -->|"80<br/>(localhost ๋๋ Public IP)"| HostPort
HostPort -->|ํฌํธ ํฌ์๋ฉ| Nginx
classDef external fill:#f96;
classDef host fill:#f9f;
class Browser external;
class HostPort host;
๐ ffmpeg๋ stderr๋ก ๋๋ฒ๊น
์ ํ๋ ์ด์
๐ HLS ํ๋กํ ์ฝ์ ๊ดํ ์ ๋ฆฌ ๋ฐ FFmpeg ์ฌ์ฉ๊ธฐ
๐ ๋นํธ๋ tsconfig.json์ด ์ธ ๊ฐ?
๐ NestJS ๊ธฐ๋ณธ ๊ฐ๋
- Modules
๐ Socket.io ์ต(๊ฐ)์ ํ
๐ ๋์ปค์ nginx์ ์ฌ์ฉ๊ธฐ
๐ ๋ถํํ
์คํธ๋ฅผ ํด๋ณด์
๐ FSD ์ฌ์ฉ๊ธฐ, ๊ทผ๋ฐ ์ด์ ๋๋ง์ ๊ท์น์ ๊ณ๋ค์ธ
๐ CICD ๊ตฌ์กฐ ์์
๐ ์จ๋ฒ ๋จ์๋ก ์คํธ๋ฆฌ๋ฐ ํ๊ธฐ (with HLS)
๐ HLS๋ก ์์
์ฃผ๊ณ ๋ฐ๊ธฐ
๐ vite + react + typescript ํ๊ฒฝ์์ path alias ์ค์
๐ React Scan์ด ๋ญ์ฃ ?
๐ ๋ก์ปฌ ํ๊ฒฝ ๊ฐ๋ฐ ๋ชจ๋ ๋ฐฐํฌ
๐ ์จ๋ฒ ์ ์ฒด๋ฅผ ์คํธ๋ฆฌ๋ฐํ๋ค๊ณ ? (with HLS)
๐ ์ฝ๋์ ์์ ์ฑ์ ๋์ด๊ธฐ ์ํด ํ
์คํธ์ฝ๋๋ฅผ ์์ฑํด๋ณด์
๐ ์๋ก๊ณ ์นจ ์ HLS ERROR
๐ input ํ๊ทธ์ ํ๊ธ ์
๋ ฅ ํ, Enter๋ฅผ ๋๋ฅด๋ฉด ํจ์๊ฐ ๋๋ฒ ํธ์ถ๋๋ ์ค๋ฅ
๐ nginx proxy pass๋ฅผ ๋ฐ๊ฟจ๋๋ ์๊ธด ์๋ฌ - ์ค์จ๊ฑฐ ์ธ์ ๋ฌธ์
๐ ๋ฐฐํฌ ํ๊ฒฝ์์ ํด๋ผ์ด์ธํธ-์๋ฒ WS handshake
๐ ๋ ๋๋ง ๋ฒ์ธ์ ํ๋!
๐ ๊ทธ๋ผ์ด๋ ๋ฃฐ
๐ฅ ํ์ ์๊ฐ
๐ ์ฝ๋ & ๊น ์ปจ๋ฒค์
๐ณ ๊น branch ์ ๋ต
๐ ๋
ธ์
๋ฌธ์ ์ ์ฅ์
๐จ ํผ๊ทธ๋ง
๐งโ๐ป ๊ธฐํ ๊ณต์ ๋ฐํ ์๋ฃ
๐ค 2์ฃผ์ฐจ ๋ฐํ ์๋ฃ
๐ ๋ฐฑ๋ก๊ทธ
๐ 1์ฃผ์ฐจ
๐ 2์ฃผ์ฐจ
๐ 3์ฃผ์ฐจ
๐ 4์ฃผ์ฐจ
๐ 5์ฃผ์ฐจ
๐๏ธ 1์ฃผ์ฐจ
๐๏ธ 2์ฃผ์ฐจ
๐๏ธ 3์ฃผ์ฐจ
๐๏ธ 4์ฃผ์ฐจ
๐๏ธ 5์ฃผ์ฐจ
โจ 1์ฃผ์ฐจ
โจ 2์ฃผ์ฐจ
โจ 3์ฃผ์ฐจ
โจ 4์ฃผ์ฐจ