Nginx in Docker

Date:     Updated:

Categories:

Tags: , ,

Nginx?

์—”์ง„์—‘์Šค๋Š” ์•„ํŒŒ์น˜์˜ C10K๋ฅผ ๋Œ€์•ˆํ•˜๊ธฐ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ๋‹ค.

๋™์‹œ์ ‘์†์ฒ˜๋ฆฌ์— ํŠนํ™”๋œ ์›น ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ์•„ํŒŒ์น˜๋ณด๋‹ค ๋™์ž‘์ด ๋‹จ์ˆœํ•˜๊ณ , ์ „๋‹ฌ์—ญํ• ๋งŒ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์‹œ์ ‘์†์— ํŠนํ™”๊ฐ€ ๋˜์–ด์žˆ๋‹ค.

Nginx๋Š” ์š”์ฒญ์— ์‘๋‹ตํ•˜๊ธฐ ์œ„ํ•ด ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

์•„ํŒŒ์ฐจ์—์„œ์˜ ์Šค๋ ˆ๋“œ/ํ”„๋กœ์„ธ์Šค ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ์™€ ๋Œ€์กฐ์ ์ด๋‹ค.

์„œ๋ฒ„์— ๋งŽ์€ ๋ถ€ํ•˜๊ฐ€ ์ƒ๊ธธ ๊ฒฝ์šฐ์˜ ์„ฑ๋Šฅ์„ ์˜ˆ์ธกํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ•ด์ค€๋‹ค.

๋ณธ ํ™˜๊ฒฝ์—์„œ๋Š” Docker์— Nginx container์„ ๋„์›Œ ์ดํ›„์— ์˜ค๋Š” container๋“ค์„ ๊ฐ๊ฐ ๋งตํ•‘ํ•˜๊ธฐ ์œ„ํ•œ

๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ๋กœ์„œ Nginx๋ฅผ ์ด์šฉํ•  ๊ฒƒ์ด๋‹ค.

๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋ž€?

๋„คํŠธ์›Œํฌ์—์„œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋Œ€์‹ ํ•ด ํ•œ ๋Œ€ ์ด์ƒ์˜ ์„œ๋ฒ„์—์„œ๋ถ€ํ„ฐ ์ž์›์„ ์ถ”์ถœํ•˜๋Š” ํ”„๋ก์‹œ์˜ ์ผ์ข….
๋งˆ์น˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›น์„œ๋ฒ„๋กœ ๋ฐ”๋กœ ์š”์ฒญํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•ด์ค€๋‹ค.
- ์žฅ์ 
    - ๋ณด์•ˆ : ํด๋ผ์ด์–ธํŠธ๋‚˜ ์„œ๋ฒ„ ๋ชจ๋‘ IP๋ฅผ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์ƒ๊น€.
    - ์„ฑ๋Šฅ : ์บ์‹ฑ ๊ธฐ๋Šฅ๊ณผ ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ(๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ๋˜๋Š” ์—”๋“œํฌ์ธํŠธ ๋งคํ•‘)์œผ๋กœ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Œ.

How to!

  1. docker hub์—์„œ nginx๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค
    docker pull nginx:latest

  2. nginx ์„ค์ •๋ณด๊ด€์šฉ docker volumn ํ˜น์€ ๋งˆ์šดํŠธ ํ•  ํ˜ธ์ŠคํŠธ์˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ํ•„์ž๋Š” docker volumn์„ ์ƒ์„ฑํ•˜์˜€์Œ.

    # docker volume ๋ฐฉ๋ฒ•
    docker volume create nginx_volume
    
    # ๋งˆ์šดํŠธ ๋ฐฉ๋ฒ•
    $YOUR_DIR/nginx
    
  3. docker์„ ๋„์›Œ๋ณธ๋‹ค. ์ด ๋•Œ, ์„ ํƒํ•œ volume์— ๋”ฐ๋ผ -v ์˜ต์…˜์œผ๋กœ ๋งˆ์šดํŠธ๋ฅผ ์ง€์ •ํ•œ๋‹ค

    docker run --name web -it -d -p 80:80 -v nginx_volume:/etc/nginx nginx ./bin/bash
    #          ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„์ง€์ •     ํฌํŠธ์ง€์ •      ๋ณผ๋ฅจ์ง€์ •             ๋„์ปค์ด๋ฏธ์ง€   ์‹คํ–‰ํ•  ๋งˆ์ง€๋ง‰๋ช…๋ น
    
  4. aws๋‚˜ ncp, gcp๊ฐ™์€ public cloud๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด, ๋ฐœ๊ธ‰๋ฐ›์€ ๊ณต์ธip๋ฅผ ์ ‘์†ํ•ด์„œ welcome nginx ๋ฌธ๊ตฌ๊ฐ€ ๋ณด์ด๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

  5. example.com ๊ฐ™์€ ๋„๋ฉ”์ธ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, conf.d์— ์„œ๋ฒ„ ๋ณ„ conf ํŒŒ์ผ์„ ์ž‘์„ฑํ•œ๋‹ค

    ์˜ˆ์‹œ)
    
    nginx, django, gitlab, jenkins, apiserver, authserver ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ตฌ์„ฑ๋˜์–ด์žˆ์„ ๋•Œ
    
    nginx -> ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ
    django -> example.com
    gitlab -> git.example.com
    jenkins -> jenkins.example.com
    .....
    authserver -> auth.example.com
    
    ์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ์šฐ์„  ๋„๋ฉ”์ธ ๊ตฌ์ž… ํ˜น์€ ๊ด€๋ฆฌ์ฒ˜์— ์„œ๋ธŒ๋„๋ฉ”์ธ์œผ๋กœ ์‚ฌ์šฉํ•  ๋ ˆ์ฝ”๋“œ๋ฅผ ์ง€์ •ํ•ด์„œ ๋ถ€์—ฌํ•œ๋‹ค.
    
    ์ดํ›„ ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋งˆ๋‹ค conf ํŒŒ์ผ์„ ์ž‘์„ฑํ•œ๋‹ค.
    ๊ธฐ๋ณธ ์ž‘์„ฑ)
    server{
            listen 80;
            server_name xxx.example.com
            location / {
                # your another container's info : port
            }
    }
    
    ์„œ๋ฒ„๋ณ„๋กœ conf ํŒŒ์ผ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹๋‹ค.
    

Leave a comment