ํ๋ก์ ํธ๋ฅผ ์๋ฒ์์ ๋ฐฐํฌํ ๋, ๋จ์ํ ๋ธ๋ก๊ทธ๋ง ๋ณด๋ฉด์ ๋ฐ๋ผํ๋ ๊ฒ์ ์ค๋ ฅ์ด ๋ ์ ์๋ค๊ณ ์๊ฐํ์ฌ Nginx์ ๋ํ์ฌ ์ ๋๋ก ๊ณต๋ถํด๋ณด๋ ๊ฒ์ด ํ์ํ๋ค๊ณ ๋๊ปด์ก๋ค. ์ค๋์ Nginx๊ฐ ์ด๋ค ๋ฐฉ์์ผ๋ก ๋์ํ๋์ง, ๊ทธ๋ฆฌ๊ณ configuration file (ํ๊ฒฝ์ค์ ํ์ผ)์ ์ด๋ค ์์ผ๋ก ๋์ด์๋์ง์ ๋ํด ์์๋ณผ ๊ฒ์ด๋ค.
0) ์๋ฒ, ์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ๋ํ ๊ฐ๋
Nginx๋ '์น ์๋ฒ'์ด๋ค. ์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ(WAS)๊ฐ ์๋ ์น์๋ฒ!
๊ทธ๋ฌ๋๊น ์ ์ ํ์ผ๋ค์ ์ ๊ณตํ๊ณ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํ๋ ๊ฒ ๊ฐ๋ค(?)
๊ทธ๋ฆฌ๊ณ ํด๋ผ์ด์ธํธ๊ฐ ์ ์ ๋ฐ์ดํฐ(HTML์ด๋ CSS, ์ด๋ฏธ์ง ๋ฑ..)์ ์์ฒญํ๋ฉด ์ ๊ณตํ๋ ์ผ์ ํ๊ณ , ๋์ ๋ฐ์ดํฐ๊ฐ ํ์ํ๋ฉด WAS์๊ฒ ๋ถํํด์ ๋ฐ์์จ ํ ๋ค์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ๋ค.
์ฐธ๊ณ ๋ก ์น์๋ฒ์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ ๋ค๋ฅด๋ค. ์ธํฐ๋ท ์ด๊ธฐ ์์ ์๋ ๋ณดํต ์ ๋ณด ์ ๋ฌ๋ง์ ์ํ ๋ฌธ์์์ฃผ ์ ์ ํ์ด์ง๋ง์ ์ ๊ณตํ์๋ค๊ณ ํ๋ค. ๊ทธ๋์ ์๋ฒ๊ฐ ํ ์ผ์ด ๊ทธ๊ฒ ํฌ์ง ์์๋ค๊ณ ํ๋ค.
ํ์ง๋ง ์ ์ ๊ธฐ์ ์ด ๋ฐ์ ํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ๋์ ์ผ๋ก ์ฒ๋ฆฌํด์ผํ ์ผ๋ค์ด ๋ง์์ง๊ณ , ์ฌ์ฉ์์ ์ ๋ ฅ๊ฐ์ ๋ฐ๋ผ ์๋ฒ๊ฐ ์ฒ๋ฆฌํด์ผํ๋ ๋ฐฉ์๋ ๋ฌ๋ผ์ง๊ธฐ ์์ํ๋ค.
๊ทธ๋ SPA(Single Page Application)์ด๋ผ๋ ๊ฐ๋ ์ด ๋ฑ์ฅํ๊ธฐ ์์ํ๋๋ฐ, ์ด๋ ๊ธฐ์กด ์น ํ์ด์ง์๋ ๋ฌ๋ฆฌ ํ์ด์ง ๊ฐฑ์ ์ ํ์ํ ๋ฐ์ดํฐ๋ง์ ์ ๋ฌ๋ฐ์ ํ์ด์ง๋ฅผ ๊ฐฑ์ ํ๋ ํ์์ด์๋ค. ์ด๋ ๊ฒ ์ฌ๋ฌ ์ ๋ณด๋ ๋ง์์ง๊ณ ๋์ ์ผ๋ก ์ฒ๋ฆฌํด์ผํ๋ ๊ฒ๋ค๊ณผ ์ ์ ์ผ๋ก ์ฒ๋ฆฌํด์ผํ๋ ๊ฒ๋ค์ ๋ถ๋ฆฌ๊ฐ ์๊ธฐ๊ฒ ๋๋ฉด์ ์น์๋ฒ(์ ์ ๋ฐ์ดํฐ ์ ๊ณต)๊ณผ ์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ(WAS)์ ์ญํ ์ด ๋๋๊ฒ ๋์๋ค.
๊ทธ๋์ ์น ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์ ์ฒ๋ฆฌํ๊ณ ์ ์ ํ์ผ ์ ๊ณต๋ฑ์ ์ผ์ ํ๊ณ ,
WAS๋ DB์กฐํ๋ ๋ค์ํ ๋น์ฆ๋์ค ๋ก์ง๋ฑ์ ๋ง๋ค์ด ์ฒ๋ฆฌํ๋ ๋ฑ์ ๋์ ํ๋(?)์ ํ๊ฒ ๋์๋ค.
NginX ๋ ๋ฐ๋ก ์ด Web Server ์ ๊ตฌ์ถ์ ๋์์ฃผ๋ ์ํํธ์จ์ด์ด๋ค. ๋ณ๋ก ํ๋ก์ ํธ๋ฅผ ํด๋ณธ ๊ฒฝํ์ด ๋ง์ง๋ ์์ง๋ง Nginx ์ค์ ํ์ผ์ ํ ๋ฒ ์ค์ ํ๊ณ ๊ฑฐ์ ์์ ์ด ํ์ ์์๋ค๋ฉด, ๊ทธ๋ฅ ๋ฐฑ์๋ ์ฝ๋๋ค์ ๊ต์ฅํ ์์ ๋ ๋ง์ด ํ๊ณ ๊ทธ๋ฌ๋ค.
1) Nginx์ ํ๋ก์ธ์ค
- Master process : configuration ํ์ผ์ ์ฝ๊ณ ์คํํ๊ณ worker process๋ค์ ์ ์ดํจ
- Worker process : ์ค์ ๋ก ์ผ์ ํ๋ process
2) Nginx์ ์ฉ๋
- static ๋ฆฌ์์ค๋ค์ serve
- ํด๋ผ์ด์ธํธ๋ก๋ถํฐ request๊ฐ ๋ค์ด์์๋ ์ด๋ฏธ์ง๋ css์ ๊ฐ์ static ์์์ Nginx๊ฐ ์ฒ๋ฆฌํด์ฃผ๊ณ , ๋์ ์ผ๋ก ๊ณ์ฐ๋๊ฑฐ๋ ์ ๋ฌ๋์ด์ผ ํ๋ ๊ฒ๋ค์ NodeJS๋ Django์ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ก ์ ๋ฌ
#Nginx config ํ์ผ ์ผ๋ถ
location /static/ {
alias ~/back/static
#์น์์ /static/ ๊ฒฝ๋ก๋ก ์จ ์์ฒญ์ ๋ํ ์์์ ์๋ฒ์ ~/back/static ๋ผ๋ ์์น์์ ์ฐพ์๋ผ
}
- Reverse Proxy๋ก ์๋
- Proxy๋ ๋ค๋ค ์๊ฒ ์ง๋ง ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์์ ์ค๊ฐ์ ์ญํ ์ ํ๋ ์ ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
- Foward Proxy : ํด๋ผ์ด์ธํธ๋ค์ ์์ฒญ์ foward proxy์์ ๊ฑฐ์น๊ณ ์๋ฒ์๊ฒ ๋ณด๋ด์ค (๋ณด์์ ์ผ๋ก ์์ ๊ฐ๋ฅ์ฑ ๋๋ค) ex) ๋ฐฉํ๋ฒฝ ๋ฑ
- Reverse Proxy : ์๋ฒ์ ์ ์ํ๊ธฐ ์ ์ reverse proxy ๋ฑ์ ํตํด ์ด๋ ์๋ฒ๋ก ์ ์กํ ์ง ๊ฒฐ์ ๊ฐ๋ฅ. ๋ณด๋ค ํจ์จ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ. ๋ณด์์ ์ผ๋ก๋ ์ข์
3) Nginx์ Configuration File
Nginx๋ module๋ก ๊ตฌ์ฑ๋๋๋ฐ, module์ Nginx configuration ํ์ผ์ ์ ์ธ directive๋ก ์ ์ดํ ์ ์๋ค.
์์์ ์ธ๊ธํ๋ฏ, configuration ํ์ผ์ Nginx์ ํ๊ฒฝ์ ์ค์ ํด์ฃผ๋ฉด Nginx๊ฐ ์ด์ ๋ง๊ฒ ์๋ฒ์ ์ญํ ์ ์ํํ๋ค. ์ด๋ directive๋ ๊ทธ ํ๊ฒฝ ์ค์ ํ์ผ๋ค์ ์ข ๋ชฉ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
- simple directive : ์คํ์ด์ค ๊ตฌ๋ถ๋์ด์๋ directive
ex) user www www; worker_processes 5;
- block directive : {}๋ก ๊ฐ์ธ์ง directive ex) http, location ๋ฑ
References
NGINX์ ๋ํ ์ ๋ฆฌ #Upstream #Reverse Proxy #Proxy_pass (tistory.com)
Nginx์ ๊ธฐ๋ณธ ๊ตฌ์ฑ, Configuration file ๋ถ์, ์ ์ ์ปจํ ์ธ ์ฒ๋ฆฌ - NERD WORLD (tistory.com)
How to Configure NGINX | Linode
https://tecoble.techcourse.co.kr/post/2021-07-30-web-server-and-nginx/
'๐งฐ Back-end > Server' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[AWS] Route53 ๋น์ฉ/์๊ธ (0) | 2023.03.06 |
---|---|
[Nginx] Nginx ๊ฐ๋ ์ ๋ฆฌ (2) - upstream ์ค์ ์ผ๋ก Nginx๋ฅผ Load Balancer(๋ก๋๋ฐธ๋ฐ์)๋ก ์ฌ์ฉํ๊ธฐ (0) | 2023.03.01 |
[์๋ฒ] ๋ก๋ ๋ฐธ๋ฐ์๋? (0) | 2023.02.24 |