rosieblue
article thumbnail
728x90

ํ”„๋กœ์ ํŠธ๋ฅผ ์„œ๋ฒ„์—์„œ ๋ฐฐํฌํ•  ๋•Œ, ๋‹จ์ˆœํžˆ ๋ธ”๋กœ๊ทธ๋งŒ ๋ณด๋ฉด์„œ ๋”ฐ๋ผํ•˜๋Š” ๊ฒƒ์€ ์‹ค๋ ฅ์ด ๋Š˜ ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ 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๋Š” ๊ทธ ํ™˜๊ฒฝ ์„ค์ • ํŒŒ์ผ๋“ค์˜ ์ข…๋ชฉ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

config ํŒŒ์ผ ์˜ˆ์‹œ

- 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์— ๋Œ€ํ•œ ์ •๋ฆฌ #Upstream #Reverse Proxy #Proxy_pass

์˜ค๋Š˜์€ ์›น์„œ๋ฒ„์ธ Nginx์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 1. NGINX ์˜ ์šฉ๋„ ์ฃผ๋กœ NodeJS๊ฐ™์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•ž์— ๋ฐฐ์น˜๋˜์–ด ์‚ฌ์šฉ๋˜์–ด ์ง€๋Š” NGINX๋Š” ์ฃผ๋กœ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜์–ด ์ง€๋Š” ๊ฒƒ ์ผ๊นŒ์š”? ๊ฐœ์ธ์ ์œผ

developer88.tistory.com

Nginx์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ, Configuration file ๋ถ„์„, ์ •์  ์ปจํ…์ธ  ์ฒ˜๋ฆฌ - NERD WORLD (tistory.com)

 

Nginx์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ, Configuration file ๋ถ„์„, ์ •์  ์ปจํ…์ธ  ์ฒ˜๋ฆฌ

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ AWS EC2 ์ธ์Šคํ„ด์Šค์— Nginx๋ฅผ ์„ค์น˜ํ•˜๊ณ , ๋ธŒ๋ผ์šฐ์ €์—์„œ Public IP ์ฃผ์†Œ๋กœ ์ ‘์†ํ•˜์—ฌ Default ์›น ํŽ˜์ด์ง€๊ฐ€ ๋„์›Œ์ง€๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์˜€๋‹ค. ์ด์ œ ๋‹จ๊ธฐ ๋ชฉํ‘œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ค€๋น„ํ•œ ์ •์  ์ปจํ…์ธ (static cont

technerd.tistory.com

How to Configure NGINX | Linode

 

How to Configure NGINX

NGINX is a high-performance web server that delivers large amounts of static content quickly. This tutorial will outline the basic NGINX parameters and conventions.

www.linode.com

https://tecoble.techcourse.co.kr/post/2021-07-30-web-server-and-nginx/

 

profile

rosieblue

@Rosieblue

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!