NGINX ์œ ๋‹› 1.9.0 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ๋ฆด๋ฆฌ์Šค

์ผ์–ด๋‚ฌ๋‹ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ๋ฆด๋ฆฌ์Šค NGINX ์œ ๋‹› 1.9, ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด(Python, PHP, Perl, Ruby, Go, JavaScript/Node.js ๋ฐ Java)๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์†”๋ฃจ์…˜์ด ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. NGINX ์œ ๋‹›์€ ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ตฌ์„ฑ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๊ณ  ๋‹ค์‹œ ์‹œ์ž‘ํ•  ํ•„์š” ์—†์ด ์‹คํ–‰ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” C๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ, ๋ฐฐํฌ์ž Apache 2.0์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. NGINX Unit์˜ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐœํ‘œ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ.

์ƒˆ ๋ฒ„์ „์—์„œ:

  • ๊ธฐํšŒ URI ์ธ์ˆ˜, ํ—ค๋” ๋ฐ ์ฟ ํ‚ค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์š”์ฒญ ๋ผ์šฐํŒ…

    "ํ—ค๋”": [
    {
    "์ธ์ฝ”๋”ฉ ํ—ˆ์šฉ": "*gzip*",
    "์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ": "Mozilla/5.0*"
    },
    {
    "์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ": "curl*"
    }
    ]

  • ์ด์ œ ๊ฒฝ๋กœ ์ผ์น˜ ํ…œํ”Œ๋ฆฟ์ด ์ค‘๊ฐ„ ํ‘œํ˜„ ๋งˆ์Šคํฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด,

    "ํ˜ธ์ŠคํŠธ": ["eu-*.example.com", "!eu-5.example.com"]

  • ์ง€์› ๊ตฌ์„ฑ์˜ ๋ฐฐ์—ด ๋‚ด์šฉ์„ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด POST ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์†ก๋œ ์ž‘์—…(๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ JSON ํ˜•์‹์œผ๋กœ ์ „์†ก๋จ)

    ์ปฌ -X POST -d '{"์ผ์น˜": {"uri": "/production/*"}, \
    "action": {"pass": "applications/wiki-prod"}}' \
    --unix-socket=/path/to/control.unit.sock \
    http://localhost/config/routes/

  • ๊ถŒํ•œ ์žˆ๋Š” ์‚ฌ์šฉ์ž๋กœ ๊ธฐ๋ณธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  Linux์—์„œ CAP_SETUID ๋ฐ CAP_SETGID ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ๋ฐ ๊ทธ๋ฃน ๋ณ€๊ฒฝ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€