๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿคท๐Ÿผ‍โ™€๏ธ Etc.../- linux, aws, docker, k8s

[Nginx] Nginx์˜ 5๊ฐ€์ง€ ์ฃผ์š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. (๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ์บ์‹ฑ, ์žฅ์•  ๋Œ€์‘, ๊ฐ€์ƒ ํ˜ธ์ŠคํŒ…, Keep Alive ์ œ์–ด)

by Wonit 2020. 11. 29.

Nginx์— ์ฃผ์š” ๊ธฐ๋Šฅ์ด ์ด 5๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  1. ์žฅ์• ๋ฅผ ๋Œ€์‘ํ•˜๋Š” ๋ฐฉ๋ฒ•
  2. ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์œผ๋กœ ๋ถ€ํ•˜๋ถ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ
  3. Keep Alive๋กœ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์ด์šฉํ•˜๊ธฐ
  4. Sub-Domain์œผ๋กœ ๋‹ค์–‘ํ•œ ์„œ๋ฒ„ ํ˜ธ์ŠคํŒ…
  5. ์บ์‹ฑ ์ฒ˜๋ฆฌ๋กœ ๋” ๋น ๋ฅธ ์†๋„๋ฅผ ์ œ๊ณต

์žฅ์•  ๋Œ€์‘

์žฅ์•  ๋Œ€์‘์€ Backend ์„œ๋ฒ„์— ๋Œ€ํ•œ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ํ† ๋Œ€๋กœ ์žฅ์• ๋ฅผ ํŒ๋‹จํ•˜๋Š” ์„œ๋น„์Šค์ด๋‹ค.

 

์žฅ์•  ๋Œ€์‘์„ ์œ„ํ•ด์„œ๋Š” Upstream Module์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, max_fails, fail_timeout์œผ๋กœ ์„œ๋ฒ„์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค.

 

๊ทธ ์„ค์ •์œผ๋กœ ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ด์„œ ์„ค์ • ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด ๋ฐฑ์—… ์„œ๋ฒ„๋กœ ์„œ๋น„์Šค๊ฐ€ ํ™œ์„ฑํ™”๋˜๊ฒŒ ํ•˜๋ฉฐ ์žฅ์• ๋ฅผ ๋Œ€์‘ํ•œ๋‹ค.

 

  • max_fails=n : n์œผ๋กœ ์ง€์ •๋œ ํšŸ์ˆ˜๋งŒํผ ์—ฐ๊ฒฐ ์‹คํŒจํ•˜๋ฉด ์„œ๋ฒ„ ๋‹ค์šด๋œ ๊ฒƒ์œผ๋กœ ํŒ๋‹จ.
  • fail_timeout=n : max_fails๊ฐ€ ์ง€์ •๋œ ์ƒํƒœ์—์„œ n๊ฐ’์ด ์„ค์ •๋งŒํผ ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•˜์ง€ ์•Š์œผ๋ฉด ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋œ ๊ฒƒ์œผ๋กœ ํŒ๋‹จ.
upstream service {
    ip_hash;
    server 192.168.0.121:80
    server 192.168.0.188:80 max_fails=5 fail_timeout=15s;
}

๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ

ํด๋Ÿฌ์Šคํ„ฐ์— ์„ค์ •๋˜๋Š” ์„œ๋ฒ„ ์ •๋ณด์™€ ํฌํŠธ๋ฅผ upstream ๋ชจ๋“ˆ๋กœ ์„ค์ •ํ•ด์„œ ์ฒซ ๋ฒˆ์งธ ์„ค์ •๋œ ์„œ๋ฒ„๊ฐ€ ์šฐ์„ ์œผ๋กœ ์ฒ˜๋ฆฌ

upstream myservice {
    ip_hash;
    server 192.168.0.121:80;
    server 192.168.0.188:80;
}
server {
        listen 80;
        server_name localhost;

    location / {
        proxy_pass http://myservice;

}

Keep Alive ์ œ์–ด

Keep Alive๋Š” Http ์†Œ์ผ“ ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋œ ์‹œ์ ๋ถ€ํ„ฐ ์›น ์„œ๋ฒ„์— ์„ค์ •๋œ Timeout ๊นŒ์ง€ ๊ธฐ์กด ์†Œ์ผ“์„ ์œ ์ง€ํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ,  Keep-Alive ์˜ต์…˜์œผ๋กœ 0์ด ๊ฐ€๋ฉด ๋น„ํ™œ์„ฑํ™” 1์ด๋ฉด ํ™œ์„ฑํ™”๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.


keepalive_timeout ์œผ๋กœ ์ปค๋„ฅ์…˜ ์‹œ๊ฐ„์„ ์„ค์ •ํ•˜๊ณ  ํ•ด๋‹น ์„ค์ • ์‹œ๊ฐ„์ด ๋งŒ๋ฃŒ๋˜๋ฉด Keep Alive ์†Œ์ผ“ ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•œ๋‹ค.

upstream myservice {
    server 192.168.0.121:80;
    keepalive 1
}
Server {
    keepalive_timeout 10
}

Sub-Domain

๊ฐ€์ƒํ˜ธ์ŠคํŠธ ๋ฐฉ์‹์œผ๋กœ ๋‘ ๊ฐœ์˜ server์„ ํ•˜๋‚˜์˜ ์›น์„œ๋ฒ„์—์„œ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

server {
    listen 80;
    server_name test1.mydomain.com
    location / {
    root /var/www/test1/public_html;
}
server {
    listen 80;
    server_name test2.mydomain.com
    location / {
    root /var/www/test2/public_html;
}

 

์บ์‹ฑ ์ฒ˜๋ฆฌ

์บ์‹ฑ์ด๋ž€ ์›น ์„œ๋น„์Šค์˜ ์ด๋ฏธ์ง€,CSS, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ™์€ ์ •์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์—ฌ
์›น ์„œ๋น„์Šค์˜ ์‘๋‹ต ์†๋„๋ฅผ ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•˜๋‹ค

  • location : ์บ์‹œ๋กœ ์ €์žฅํ•  ํŒŒ์ผ ์„ค์ •
  • expires : ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ ๊ธฐ๊ฐ„ ์„ค์ •
  • expires 1 (m, y) ์„ค์ • ๊ธฐ๊ฐ„ ๋™์•ˆ ์ •์  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ์„ค์ •์œผ๋กœ m์€ ๋‹ฌ y๋Š” ๋…„
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
    expires 1M;
    access_log off;
    add_header Cache-Control "public";
}

 


์˜ค๋Š˜์€ Nginx์˜ ๋Œ€ํ‘œ์ ์ธ ๊ธฐ๋Šฅ 5๊ฐ€์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค.

 

๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” Nginx๋กœ ์œ„์˜ ๊ธฐ๋Šฅ๋“ค์„ ํ•˜๋‚˜ ํ•˜๋‚˜ ๊ตฌํ˜„ํ•ด๋ณด๋ฉด์„œ ์ดํ•ดํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด์ž.

๋Œ“๊ธ€