Ansible-role-nginx-config: ์Šค๋‹ˆํŽซ ์—…๋กœ๋“œ ๊ธฐ๋Šฅ

์— ๋งŒ๋“  2020๋…„ 07์›” 30์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: nginxinc/ansible-role-nginx-config

๊ธฐ๋Šฅ ์š”์ฒญ์ด ๋ฌธ์ œ์™€ ๊ด€๋ จ๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?
๋‹ค๋ฅธ nginx http conf ํŒŒ์ผ์—์„œ ๊ณตํ†ต ๊ตฌ์„ฑ์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ ํŒŒ์ผ์ด ํฌํ•จ๋œ snippets ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ •๋ง ํŽธ๋ฆฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ‹€๋ฆฌ์ง€ ์•Š์•˜๋‹ค๋ฉด ์ด๊ฒƒ์ด ํ˜„์žฌ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ (๋ช…์‹œ์ ์œผ๋กœ) ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ณ ๋ คํ•œ ๋Œ€์•ˆ์„ ๊ธฐ์ˆ ํ•˜์‹ญ์‹œ์˜ค
nginx_main_upload_src ๋ฐ nginx_http_upload_src ์‚ฌ์šฉํ•ด ๋ณด์•˜์ง€๋งŒ ์ด ๊ฒฝ์šฐ ๋‘˜ ๋‹ค ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. nginx_main_upload_src ๋Š” ํŒŒ์ผ์„ ์˜ˆ์ƒํ•˜๊ณ  nginx_http_upload_src ๋Š” fileglob ์‚ฌ์šฉํ•˜์—ฌ ์žฌ๊ท€ ๋ณต์‚ฌ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ๋ณ„๋„์˜ ์—ญํ• ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ชจ๋“  nginx ๊ตฌ์„ฑ์„ ๋™์ผํ•œ ์—ญํ• ์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์›ํ•˜๋Š” ์†”๋ฃจ์…˜ ์„ค๋ช…
ํ•œ ๊ฐ€์ง€ ์†”๋ฃจ์…˜์€ nginx_http_upload_enable ์™€ ๊ฐ™์€ ๊ธฐ์กด ์—…๋กœ๋“œ ๋ณ€์ˆ˜ ์˜ต์…˜์„ ์—๋ฎฌ๋ ˆ์ดํŠธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, vars: nginx_snippets_upload_enable ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ src ๋ฐ dest ๋Œ€์‘ํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์†”๋ฃจ์…˜์ด snippets ๋„ˆ๋ฌด ํ•œ์ •์ ์ด๋ผ๊ณ  ์ƒ๊ฐ๋˜๋ฉด ๋กœ์ปฌ ํŒŒ์ผ์„ ์›๊ฒฉ nginx ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ฃจํŠธ์— ๋ณต์‚ฌํ•˜๋Š” ๋” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ด Ansible nginx ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ์ผ์ข…์˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. https://github.com/tschifftner/ansible-role-nginx#use -additional-nginx-templates

๋˜๋Š” http config ๋””๋ ‰ํ† ๋ฆฌ์— ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ๋„ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ snippets ๊ฐ€ ์‚ฌ์‹ค์ƒ nginx ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ €๋Š” ์ด๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฃจํŠธ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”!

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@asabhaney ๋งˆ์นจ๋‚ด #59์—์„œ ์Šค๋‹ˆํŽซ ์ง€์›์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

FWIW, ํŠน์ • ๋‹จ๊ณ„์—์„œ ๋‹ค๋ฅธ nginx_config_*_upload_* ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ๊ตฌ์„ฑ ํŒŒ์ผ ์—…๋กœ๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ผ๋ถ€ ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜๋„ ์žˆ์Œ). (๊ทธ๋ฆฌ๊ณ  ๋‚ด ์ƒ๊ฐ์—๋Š” snippets ์˜ต์…˜์ด main/http/stream ๊ตฌ์„ฑ ์—…๋กœ๋“œ ์ž‘์—…์—๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค).

๋ชจ๋“  5 ๋Œ“๊ธ€

ํฅ๋ฏธ๋กœ์šด ์ œ์•ˆ @asabhaney! ์ด ์ž‘์—…์ด ์–ธ์ œ/์‹คํ–‰๋ ์ง€ ์•ฝ์†ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ(ํ˜„์žฌ ๋ฐฑ๋กœ๊ทธ์— ๋” ๋†’์€ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ž‘์—…์ด ์žˆ์Šต๋‹ˆ๋‹ค) ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ž์œ ๋กญ๊ฒŒ PR์„ ์ œ์ถœํ•˜์„ธ์š” ๐Ÿ˜„

์ด๋ด ๋˜!

๊ณต์œ ํ•ด ์ฃผ์‹  ์ œ์•ˆ๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋ณด๊ณ  ์žˆ์œผ๋ฉฐ ์ด์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ์ƒ๊ฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํ•ด๋‹น ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์˜ˆ์ œ๋Š” nginx_http_upload_* ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์ œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ตฌ์„ฑ ๋ฐ ์Šค๋‹ˆํŽซ ํŒŒ์ผ์„ ๋ชจ๋‘ ๋‹ค๋ฅธ ๋Œ€์ƒ ํด๋”์— ์—…๋กœ๋“œํ•˜๋ ค๋Š” ๊ฒฝ์šฐ nginx_http_upload_* ํ•˜๋ฉด ํ•˜๋‚˜์˜ ์†Œ์Šค๋งŒ ์„ ํƒํ•˜๊ณ  ํ•œ๋ฒˆ์— ๋ชฉ์ ์ง€.
  2. NGINX์˜ ์‚ฌ์‹ค์ƒ์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์—๋Š” snippets ๊ฐœ๋…์ด ์—†์Šต๋‹ˆ๋‹ค. ๋งํฌํ•ด์ฃผ์‹  ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋„์ž…๋œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ๊ถŒ์žฅ๋˜๋Š” ํด๋” ๊ตฌ์กฐ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

nginx_http_upload_* ๋ฅผ ๋ณต์ œํ•˜์—ฌ nginx_snippets_upload_* ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์ถฉ๋ถ„ํžˆ ์‰ฌ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ์งˆ๋ฌธ์€ nginx_*_upload_* ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ชฉ๋ก์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๊ณ  ์—…๋กœ๋“œ ๊ด€๋ จ ๋ณ€์ˆ˜์˜ ์ „์ฒด ์‹œ๋ฆฌ์ฆˆ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์ ์ธ์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.

@alessfg๋‹˜ , ์‹œ๊ฐ„์„ ๋‚ด์–ด snippets ๋Œ€ํ•œ ์‚ฌ์‹ค์ƒ์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ์ฐธ์กฐ๊ฐ€ ์—†๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค(Nginx์˜ ๋ฌธ์„œ ์ „์ฒด์— ํฉ์–ด์ ธ ์žˆ๋Š” ๊ฒƒ์„ ๋ณด์•˜์ง€๋งŒ). ๋‚˜๋Š” ๋˜ํ•œ ๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ์ผ๋ จ์˜ vars( nginx_snippets_upload_* )๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋„ˆ๋ฌด ๊ตฌ์ฒด์ ์ด๊ณ  ๋ถ€ํ’€๋ ค์ง„๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

๋ฃจํŠธ nginx ๋””๋ ‰ํ† ๋ฆฌ์— ์ถ”๊ฐ€ ํด๋”/ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ์ผ๋ฐ˜์ ์ธ ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. nginx_http_upload_* ์™€ ๊ฐ™์€ var ๊ต์ฒด๋ฅผ ํฌํ•จํ•ด์•ผ ํ•˜๋Š”์ง€(์—ญ๋ฐฉํ–ฅ ๋ถ„๋ฆฌ๋Š” ๋งํ•  ๊ฒƒ๋„ ์—†๊ณ ) ๋˜๋Š” nginx_other_upload_* ์™€ ๊ฐ™์€ ํ˜•์‹์ด์–ด์•ผ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@asabhaney ๋งˆ์นจ๋‚ด #59์—์„œ ์Šค๋‹ˆํŽซ ์ง€์›์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

FWIW, ํŠน์ • ๋‹จ๊ณ„์—์„œ ๋‹ค๋ฅธ nginx_config_*_upload_* ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ๊ตฌ์„ฑ ํŒŒ์ผ ์—…๋กœ๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ผ๋ถ€ ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜๋„ ์žˆ์Œ). (๊ทธ๋ฆฌ๊ณ  ๋‚ด ์ƒ๊ฐ์—๋Š” snippets ์˜ต์…˜์ด main/http/stream ๊ตฌ์„ฑ ์—…๋กœ๋“œ ์ž‘์—…์—๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค).

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋นจ๋ฆฌ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰