๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋Š” ํ˜„๋Œ€ ์›น ์ธํ”„๋ผ์—์„œ ํ•„์ˆ˜์ ์ธ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋ฅผ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ํ”„๋ก์‹œ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๋ถ€ํ„ฐ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ํ”„๋ก์‹œ์˜ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์†”๋ฃจ์…˜์„ ๋น„๊ต ๋ถ„์„ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋ก์‹œ(Proxy)๋ž€?

ํ”„๋ก์‹œ๋Š” ‘๋Œ€๋ฆฌ์ธ’์ด๋ผ๋Š” ๋œป์œผ๋กœ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์—์„œ ์ค‘๊ฐœ์ž ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์น˜ ๋น„์„œ๊ฐ€ ์ƒ์‚ฌ๋ฅผ ๋Œ€์‹ ํ•ด ์ „ํ™”๋ฅผ ๋ฐ›๊ณ  ํ•„์š”ํ•œ ์‚ฌ๋žŒ์—๊ฒŒ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ํ”„๋ก์‹œ ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๋Œ€์‹  ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‘๋‹ต์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋ก์‹œ๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค:

  • ํฌ์›Œ๋“œ ํ”„๋ก์‹œ(Forward Proxy): ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค
  • ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ(Reverse Proxy): ์„œ๋ฒ„๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์—์„œ๋Š” ์„œ๋ฒ„ ์ธก์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ์— ๋Œ€ํ•ด ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.

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

๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ(Reverse Proxy)๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ์‚ฌ์ด์— ์œ„์น˜ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋Œ€์‹  ๋ฐ›์•„ ์ ์ ˆํ•œ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•˜๋Š” ์ค‘๊ฐ„ ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ํฌ์›Œ๋“œ ํ”„๋ก์‹œ๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ, ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋Š” ์„œ๋ฒ„๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ์š”์ฒญ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด ์‚ฌ์šฉ์ž์™€ ์„œ๋ฒ„ ์‚ฌ์ด์— ์ค‘๊ณ„์ž๋กœ, ์ข…์—…์›์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์ค‘๊ณ„ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

ํฌ์›Œ๋“œ ํ”„๋ก์‹œ vs ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ

ํฌ์›Œ๋“œ ํ”„๋ก์‹œ

ํด๋ผ์ด์–ธํŠธ โ†’ ํฌ์›Œ๋“œ ํ”„๋ก์‹œ โ†’ ์ธํ„ฐ๋„ท โ†’ ์„œ๋ฒ„
  • ํด๋ผ์ด์–ธํŠธ์˜ IP๋ฅผ ์ˆจ๊น€
  • ์ฝ˜ํ…์ธ  ํ•„ํ„ฐ๋ง
  • ์บ์‹ฑ์œผ๋กœ ๋Œ€์—ญํญ ์ ˆ์•ฝ

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

ํด๋ผ์ด์–ธํŠธ โ†’ ์ธํ„ฐ๋„ท โ†’ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ โ†’ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„
  • ์„œ๋ฒ„์˜ IP์™€ ๊ตฌ์กฐ๋ฅผ ์ˆจ๊น€
  • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ
  • SSL/TLS ์ข…๋ฃŒ
  • ๋ณด์•ˆ ๊ณ„์ธต ์ถ”๊ฐ€

์—ฌ๊ธฐ์„œ ๋‚˜์˜ค๋Š” ‘์„œ๋ฒ„์˜ IP์™€ ๊ตฌ์กฐ๋ฅผ ์ˆจ๊น€’์€ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋ฅผ ์™œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€๋ฅผ ๋‹จ์ ์œผ๋กœ ๊ฐ•์กฐํ•˜๋Š” ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์™ธ๋ถ€์™€ ํ†ต์‹ ํ•˜๋Š” ๊ธฐ๊ธฐ๊ฐ€ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ํ•˜๋‚˜๋กœ ๊ตฌ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์‚ฝ์ž… ๋“ฑ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ดํ‚น์„ ๋‹นํ–ˆ์„ ๋•Œ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์„œ๋ฒ„๋งŒ ๊ณต๊ฐœ๋˜๊ณ  ๊ทธ ๋’ท๋‹จ์— ์žˆ๋Š” ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋Š” ํ•ด์ปค์˜ ์ถ”๊ฐ€์ ์ธ ๊ณต๊ฒฉ ์‹œ๋„๋ฅผ ํ•ด์•ผ๋งŒ ๋“œ๋Ÿฌ๋‚˜๋Š” ๊ตฌ์กฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋“ฑ ๋‹ค์ค‘ ์„œ๋ฒ„๋ฅผ ์ค‘๊ณ„ํ•ด์ฃผ๋Š” ์—ญํ• ๊ณผ SSL/TLS ์ „๋‹ด ์—ญํ• ์„ ๋งก์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ฆ์„œ๋„ ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ๋„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ

1. SSL/TLS ์ข…๋ฃŒ ๋ฐ ์•”ํ˜ธํ™”

  • HTTPS ์—ฐ๊ฒฐ์„ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ์—์„œ ์ฒ˜๋ฆฌ
  • ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋Š” HTTP๋กœ ํ†ต์‹  ๊ฐ€๋Šฅ
  • ์ธ์ฆ์„œ ๊ด€๋ฆฌ ์ค‘์•™ํ™”
  • Let’s Encrypt ์ž๋™ ๊ฐฑ์‹ 

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

  • ์—ฌ๋Ÿฌ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋กœ ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ
  • ์„œ๋ฒ„ ๋ถ€ํ•˜ ๊ฐ์†Œ
  • ๊ณ ๊ฐ€์šฉ์„ฑ ํ™•๋ณด
  • ์„ธ์…˜ ์œ ์ง€ (Sticky Session)

3. ๋ณด์•ˆ ๊ฐ•ํ™”

  • ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ IP ๋ฐ ๊ตฌ์กฐ ์ˆจ๊น€
  • DDoS ๊ณต๊ฒฉ ์™„ํ™”
  • Rate Limiting
  • IP ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ/๋ธ”๋ž™๋ฆฌ์ŠคํŠธ
  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฉํ™”๋ฒฝ (WAF) ํ†ตํ•ฉ

4. ์บ์‹ฑ ๋ฐ ์„ฑ๋Šฅ ์ตœ์ ํ™”

  • ์ •์  ์ฝ˜ํ…์ธ  ์บ์‹ฑ
  • ์‘๋‹ต ์••์ถ• (gzip, Brotli)
  • HTTP/2, HTTP/3(QUIC) ์ง€์›
  • ์ปค๋„ฅ์…˜ ํ’€๋ง

5. ํ†ตํ•ฉ๋œ ๋กœ๊น… ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง

  • ์ค‘์•™ํ™”๋œ ์•ก์„ธ์Šค ๋กœ๊ทธ
  • ์‹ค์‹œ๊ฐ„ ํŠธ๋ž˜ํ”ฝ ๋ชจ๋‹ˆํ„ฐ๋ง
  • ์—๋Ÿฌ ์ถ”์ 
  • ๋ถ„์„ ๋„๊ตฌ ํ†ตํ•ฉ

๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ์˜ ๋‹จ์ 

๋ฌผ๋ก  ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์‚ฌ์šฉ ์‹œ์— ์•„๋ž˜์™€ ๊ฐ™์€ ๋‹จ์ ๋“ค๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค:

  • ์—ฐ๊ฒฐ ์‹œ๊ฐ„ ์ฆ๊ฐ€: ์ค‘๊ฐ„ ๊ณ„์ธต์„ ๊ฑฐ์น˜๊ธฐ ๋•Œ๋ฌธ์— ์‘๋‹ต ์‹œ๊ฐ„์ด ์•ฝ๊ฐ„ ๋Š˜์–ด๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • ๋ณ‘๋ชฉ ๋ฐ ๋‹จ์ผ ์žฅ์•  ์ง€์ : ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๊ฐ€ ๋‹ค์šด๋˜๋ฉด ๋ชจ๋“  ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • ์„ค์ • ๋ณต์žก์„ฑ: ํ”„๋ก์‹œ ์„ค์ •์œผ๋กœ ์ธํ•œ ๋ฐ์ดํ„ฐ ํŒจํ‚ท ์ฐจ๋‹จ ๋“ฑ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

ํ•˜์ง€๋งŒ ๊ฐœ์ธ์ ์œผ๋กœ๋Š” ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ด์ž ์žฅ์ ์ธ ๊ธฐ๋Šฅ๋“ค์ด ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ฐœ์ƒํ•˜๋Š” ๋‹จ์ ๋ณด๋‹ค ์›”๋“ฑํžˆ ๋†’๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜๋ณ„ ์†Œ๊ฐœ

NGINX (์˜คํ”ˆ์†Œ์Šค)

๐ŸŒ ๊ณต์‹ ์‚ฌ์ดํŠธ: https://nginx.org/

NGINX๋Š” ๊ณ ์„ฑ๋Šฅ ์›น ์„œ๋ฒ„์ด์ž ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋กœ, ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ†ตํ•ด ์ ์€ ๋ฆฌ์†Œ์Šค๋กœ ๋งŽ์€ ๋™์‹œ ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2004๋…„ Igor Sysoev๊ฐ€ ๊ฐœ๋ฐœํ–ˆ์œผ๋ฉฐ, ํ˜„์žฌ ์ „ ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์›น ์„œ๋ฒ„ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค์ƒ ์•„๋ž˜์— ๋‚˜์˜ค๋Š” Caddy๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์„œ๋น„์Šค๊ฐ€ NGINX๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  NGINX๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์•„๋ž˜์˜ ์„œ๋น„์Šค๋“ค์ด ์ œ๊ณตํ•˜๋Š” UI๋‚˜ ์›ํด๋ฆญ ์„ค์ • ๋“ฑ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋‹ˆ ํด๋ž˜์‹์ฒ˜๋Ÿผ ์†์ˆ˜ ์„ค์ •์„ ํƒ€์ดํ•‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•:

  • ๋†’์€ ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ
  • ๋‚ฎ์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰
  • ์„ค์ • ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๊ตฌ์„ฑ
  • ๊ฐ•๋ ฅํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›
  • ๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ ์ง€์›

์ ํ•ฉํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€:

  • ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ
  • ์„ธ๋ฐ€ํ•œ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ
  • ์ธํ”„๋ผ ์—”์ง€๋‹ˆ์–ด๋ง ๊ฒฝํ—˜์ด ์žˆ๋Š” ํŒ€

NGINX Proxy Manager (NPM)

๐ŸŒ ๊ณต์‹ ์‚ฌ์ดํŠธ: https://nginxproxymanager.com/

NGINX๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ GUI ๊ด€๋ฆฌ ๋„๊ตฌ๋กœ, ๋ณต์žกํ•œ NGINX ์„ค์ • ํŒŒ์ผ์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ๋„ ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Docker ์ปจํ…Œ์ด๋„ˆ๋กœ ์ œ๊ณต๋˜์–ด ๋ฐฐํฌ๊ฐ€ ๊ฐ„ํŽธํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ์„œ๋น„์Šค์˜€์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•:

  • ์ง๊ด€์ ์ธ ์›น UI
  • Let’s Encrypt ์ž๋™ SSL ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ๋ฐ ๊ฐฑ์‹ 
  • ์•ก์„ธ์Šค ๋ฆฌ์ŠคํŠธ ๋ฐ ๊ธฐ๋ณธ ์ธ์ฆ ์ง€์›
  • Docker ๊ธฐ๋ฐ˜ ๋ฐฐํฌ
  • SQLite/MariaDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ง€์›

์ ํ•ฉํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€:

  • ํ™ˆ๋žฉ ํ™˜๊ฒฝ
  • ์ค‘์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ
  • NGINX ์„ค์ •์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž
  • ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ดํ•‘

NPMplus

๐ŸŒ ๊ณต์‹ ์‚ฌ์ดํŠธ: https://github.com/ZoeyVid/NPMplus

NPMplus๋Š” NGINX Proxy Manager์˜ ๊ฐœ์„ ๋œ ํฌํฌ ๋ฒ„์ „์œผ๋กœ, ์›๋ณธ ํ”„๋กœ์ ํŠธ์— ๋‹ค์–‘ํ•œ ๋ณด์•ˆ ๋ฐ ์„ฑ๋Šฅ ๊ฐœ์„  ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. Alpine Linux ๊ธฐ๋ฐ˜์œผ๋กœ ๋” ์ž‘์€ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ์ตœ์‹  ํ”„๋กœํ† ์ฝœ๊ณผ ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ModSecurity์™€ HTTP/3 ํ”„๋กœํ† ์ฝœ ๋“ฑ ์žฅ์ ์ด ๋งŽ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•:

  • HTTP/3 (QUIC) ํ”„๋กœํ† ์ฝœ ์ง€์›
  • CrowdSec IPS ํ†ตํ•ฉ
  • ModSecurity v3 + OWASP CRS v4.21 WAF
  • Brotli ์••์ถ• ์ง€์›
  • OCSP Stapling/Must-Staple
  • GoAccess ํ†ตํ•ฉ (์‹ค์‹œ๊ฐ„ ๋ถ„์„)
  • ํ–ฅ์ƒ๋œ ๋ณด์•ˆ ํ—ค๋”
  • PHP-FPM ์˜ต์…˜ ์ง€์›
  • ์ž๋™ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ตœ์ ํ™”

์ ํ•ฉํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€:

  • ๋ณด์•ˆ์ด ์ค‘์š”ํ•œ ํ™˜๊ฒฝ
  • ์ตœ์‹  ํ”„๋กœํ† ์ฝœ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ
  • ํ™ˆ๋žฉ์—์„œ ํ”„๋กœ๋•์…˜๊ธ‰ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•  ๋•Œ
  • NPM์—์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ

NGINX Proxy Guard (NPG)

๐ŸŒ ๊ณต์‹ ์‚ฌ์ดํŠธ: https://nginxproxyguard.com

NGINX Proxy Guard๋Š” ๋ณด์•ˆ์— ํŠนํ™”๋œ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ๊ด€๋ฆฌ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„ํฌ๋Ÿผ์˜ ๋‹ฌ์†Œ๋‹˜์ด ๋งŒ๋“œ์‹  ํ•œ๊ตญ ์ตœ์ ํ™” ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ModSecurity์™€ OWASP Core Rule Set์„ ๊ธฐ๋ณธ ํƒ‘์žฌํ•˜์—ฌ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฉํ™”๋ฒฝ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋ด‡ ์ฐจ๋‹จ, GeoIP ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ์ œ์–ด ๋“ฑ ๋‹ค์–‘ํ•œ ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ์›น UI๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

WAF์™€ Exploit ์ฐจ๋‹จ์„ ์ œ๊ณตํ•˜๋Š”๋ฐ, Web Application Firewall์˜ ํŠน์„ฑ์ƒ ์ด๊ฒƒ์ด ์žฅ์ ์ด์ž ๋‹จ์ ์ด ๋ฉ๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์„ ๊ฒ€์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๊ณ , WAF์˜ ์ตœ๋Œ€ ๋‹จ์ ์ธ False Positive(์˜คํƒ)๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ง€์†์ ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•:

  • ModSecurity v3 + OWASP CRS v4.21 ๋‚ด์žฅ
  • 80+ ์•…์„ฑ ๋ด‡ ๋ฐ 50+ AI ํฌ๋กค๋Ÿฌ ์ž๋™ ์ฐจ๋‹จ
  • GeoIP ๊ธฐ๋ฐ˜ ๊ตญ๊ฐ€๋ณ„ ์ ‘๊ทผ ์ œ์–ด (๋งต ์‹œ๊ฐํ™”)
  • ์‹ค์‹œ๊ฐ„ ํŠธ๋ž˜ํ”ฝ ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ
  • ๋กœ๊ทธ ๋ทฐ์–ด ๋ฐ ๋ถ„์„ ๋„๊ตฌ
  • HTTP/3 ๋ฐ QUIC ์ง€์›
  • PostgreSQL + Valkey(Redis) ์•„ํ‚คํ…์ฒ˜
  • Go ์–ธ์–ด ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ (ํšจ์œจ์ ์ธ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ)

์ ํ•ฉํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€:

  • ๋ณด์•ˆ์ด ์ตœ์šฐ์„ ์ธ ํ™˜๊ฒฝ
  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฉํ™”๋ฒฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ
  • ๋ด‡ ํŠธ๋ž˜ํ”ฝ ์ฐจ๋‹จ์ด ์ค‘์š”ํ•œ ์‚ฌ์ดํŠธ
  • ์ง€์—ญ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ
  • ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋กœ๊ทธ ๋ถ„์„์ด ์ค‘์š”ํ•œ ํ™˜๊ฒฝ

Caddy

๐ŸŒ ๊ณต์‹ ์‚ฌ์ดํŠธ: https://caddyserver.com/

Caddy๋Š” Go ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํ˜„๋Œ€์ ์ธ ์›น ์„œ๋ฒ„์ด์ž ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ์ž๋™ HTTPS ์„ค์ •์œผ๋กœ, Let’s Encrypt ์ธ์ฆ์„œ๋ฅผ ์ž๋™์œผ๋กœ ๋ฐœ๊ธ‰ํ•˜๊ณ  ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค. Caddyfile์ด๋ผ๋Š” ๊ฐ„๋‹จํ•œ ์„ค์ • ๋ฌธ๋ฒ•์„ ์ œ๊ณตํ•˜์—ฌ ์„ค์ •์ด ๋งค์šฐ ์ง๊ด€์ ์ž…๋‹ˆ๋‹ค.

Go ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์—ˆ๊ณ  ์–ธ์–ด์˜ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ๋ฌด์ค‘๋‹จ ๋ณ€๊ฒฝ๊ณผ ์ž๋™ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ํƒ์ƒ‰ ๋“ฑ ์žฅ์ ์ด ๋งŽ์Šต๋‹ˆ๋‹ค๋งŒ, ๊ฐœ์ธ์ ์œผ๋กœ ์ฒ˜์Œ ์„ค์ •์ด ์ œ์ผ ์–ด๋ ค์› ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•:

  • ์ž๋™ HTTPS (Let’s Encrypt)
  • ๊ฐ„๋‹จํ•œ Caddyfile ๋ฌธ๋ฒ•
  • HTTP/3 ๊ธฐ๋ณธ ์ง€์›
  • ์ž๋™ ๋ฆฌ๋กœ๋“œ (๋ฌด์ค‘๋‹จ ์„ค์ • ๋ณ€๊ฒฝ)
  • JSON API๋ฅผ ํ†ตํ•œ ๋™์  ์„ค์ •
  • ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ

์ ํ•ฉํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€:

  • ๋น ๋ฅธ ๋ฐฐํฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ
  • ๊ฐ„๋‹จํ•œ ์„ค์ •์„ ์„ ํ˜ธํ•˜๋Š” ๊ฒฝ์šฐ
  • ์ž๋™ํ™”๋œ SSL ๊ด€๋ฆฌ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ
  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ™˜๊ฒฝ

Traefik

๐ŸŒ ๊ณต์‹ ์‚ฌ์ดํŠธ: https://traefik.io/

Traefik์€ Go ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ๋ฐ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์ž…๋‹ˆ๋‹ค. Docker, Kubernetes ๋“ฑ ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ, ์„œ๋น„์Šค๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ์„ค์ •์„ ๋™์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํฐ ํŠน์ง•์ž…๋‹ˆ๋‹ค. ๋ ˆ์ด๋ธ” ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด ์ปจํ…Œ์ด๋„ˆ๋ณ„๋กœ ๋ผ์šฐํŒ… ๊ทœ์น™์„ ์‰ฝ๊ฒŒ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€์‹œ๋ณด๋“œ๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ผ์šฐํŒ… ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, Let’s Encrypt๋ฅผ ํ†ตํ•œ ์ž๋™ SSL ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ๋ฐ ๊ฐฑ์‹ ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ดˆ๊ธฐ ํ•™์Šต ๊ณก์„ ์ด ์žˆ๊ณ , ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์„ค์ •์ด ๋ณต์žกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•:

  • ์ž๋™ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ (Docker, Kubernetes, Consul ๋“ฑ)
  • ๋ ˆ์ด๋ธ”/์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜ ๋™์  ์„ค์ •
  • ์ž๋™ HTTPS (Let’s Encrypt, ์™€์ผ๋“œ์นด๋“œ ์ง€์›)
  • ์‹ค์‹œ๊ฐ„ ๋Œ€์‹œ๋ณด๋“œ ๋ฐ ๋ฉ”ํŠธ๋ฆญ
  • HTTP/3 ์ง€์›
  • ๋ฏธ๋“ค์›จ์–ด ์‹œ์Šคํ…œ (์ธ์ฆ, Rate Limiting, ํ—ค๋” ์ˆ˜์ • ๋“ฑ)
  • ๋‹ค์–‘ํ•œ ๋ฐฑ์—”๋“œ ์ง€์› (Docker, Kubernetes, Consul, ํŒŒ์ผ ๋“ฑ)

์ ํ•ฉํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€:

  • Docker Compose ๊ธฐ๋ฐ˜ ํ™ˆ๋žฉ ํ™˜๊ฒฝ
  • Kubernetes ํด๋Ÿฌ์Šคํ„ฐ
  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜
  • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž์ฃผ ์ƒ์„ฑ/์‚ญ์ œ๋˜๋Š” ๋™์  ํ™˜๊ฒฝ
  • ์ž๋™ํ™”๋œ ์„ค์ • ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ

์†”๋ฃจ์…˜ ๋น„๊ตํ‘œ

ํ•ญ๋ชฉNGINXNGINX Proxy ManagerNPMplusNGINX Proxy GuardCaddyTraefik
๊ธฐ๋ณธ ์ •๋ณด
๋ผ์ด์„ผ์ŠคBSD-2-ClauseMITMITMITApache 2.0MIT
๊ฐ€๊ฒฉ๋ฌด๋ฃŒ๋ฌด๋ฃŒ๋ฌด๋ฃŒ๋ฌด๋ฃŒ๋ฌด๋ฃŒ๋ฌด๋ฃŒ
๊ฐœ๋ฐœ ์–ธ์–ดCJavaScript/Node.jsJavaScript/Node.js + ShellGo + TypeScriptGoGo
๋ฒ ์ด์Šค ์ด๋ฏธ์ง€DebianAlpine LinuxCustomAlpine/ScratchAlpine
๊ด€๋ฆฌ ๋ฐฉ์‹
์„ค์ • ๋ฐฉ์‹์„ค์ • ํŒŒ์ผWeb UIWeb UIWeb UICaddyfile๋ ˆ์ด๋ธ”/YAML/TOML
GUI ์ œ๊ณตโŒโœ…โœ…โœ…โŒโœ… (๋Œ€์‹œ๋ณด๋“œ)
API ์ œ๊ณตโŒโœ… (Internal)โœ… (Internal)โœ…โœ… (JSON)โœ… (REST)
ํ•™์Šต ๊ณก์„ ๋†’์Œ๋‚ฎ์Œ๋‚ฎ์Œ๋‚ฎ์Œ์ค‘๊ฐ„์ค‘๊ฐ„-๋†’์Œ
SSL/TLS
์ž๋™ SSL์ˆ˜๋™ (Certbot)โœ… (Let’s Encrypt)โœ… (Let’s Encrypt)โœ… (Let’s Encrypt)โœ… (์ž๋™)โœ… (Let’s Encrypt)
์™€์ผ๋“œ์นด๋“œ ์ธ์ฆ์„œโœ… (์ˆ˜๋™)โœ… (DNS-01)โœ… (DNS-01)โœ… (DNS-01)โœ… (DNS-01)โœ… (DNS-01)
OCSP Staplingโœ…โŒโœ…โŒโœ…โœ…
์ปค์Šคํ…€ ์ธ์ฆ์„œโœ…โœ…โœ…โœ…โœ…โœ…
ํ”„๋กœํ† ์ฝœ ์ง€์›
HTTP/1.1โœ…โœ…โœ…โœ…โœ…โœ…
HTTP/2โœ…โœ…โœ…โœ…โœ…โœ…
HTTP/3 (QUIC)โœ… (๋ชจ๋“ˆ)โŒโœ…โœ…โœ… (๊ธฐ๋ณธ)โœ…
WebSocketโœ…โœ…โœ…โœ…โœ…โœ…
gRPCโœ…โœ…โœ…โœ…โœ…โœ…
๋ณด์•ˆ ๊ธฐ๋Šฅ
๊ธฐ๋ณธ ์ธ์ฆโœ…โœ…โœ…โœ…โœ…โœ… (๋ฏธ๋“ค์›จ์–ด)
์•ก์„ธ์Šค ๋ฆฌ์ŠคํŠธโœ…โœ…โœ…โœ…โœ…โœ… (IP ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ)
Rate Limitingโœ…โŒโœ…โœ…โœ…โœ… (๋ฏธ๋“ค์›จ์–ด)
IP ํ•„ํ„ฐ๋งโœ…โœ…โœ…โœ…โœ…โœ…
WAF (ModSecurity)โœ… (๋ชจ๋“ˆ)โŒโœ…โœ… (๋‚ด์žฅ)โœ… (ํ”Œ๋Ÿฌ๊ทธ์ธ)โœ… (ํ”Œ๋Ÿฌ๊ทธ์ธ)
GeoIP ์ฐจ๋‹จโœ… (๋ชจ๋“ˆ)โŒโŒโœ… (GUI)โœ… (ํ”Œ๋Ÿฌ๊ทธ์ธ)โœ… (ํ”Œ๋Ÿฌ๊ทธ์ธ)
๋ด‡ ์ฐจ๋‹จโœ… (์„ค์ •)โŒโœ…โœ… (์ž๋™)โœ… (ํ”Œ๋Ÿฌ๊ทธ์ธ)โœ… (๋ฏธ๋“ค์›จ์–ด)
์„ฑ๋Šฅ
๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑโœ…โœ… (์ œํ•œ์ )โœ…โœ… (์ œํ•œ์ )โœ…โœ… (๊ณ ๊ธ‰)
์บ์‹ฑโœ…โœ…โœ…โœ…โœ…โŒ (๋ณ„๋„ ์†”๋ฃจ์…˜)
Brotli ์••์ถ•โœ… (๋ชจ๋“ˆ)โŒโœ…โŒโœ… (๋‚ด์žฅ)โœ… (๋ฏธ๋“ค์›จ์–ด)
๋™์  ์„ค์ • ๋ณ€๊ฒฝ์žฌ์‹œ์ž‘ ํ•„์š”์ฆ‰์‹œ์ฆ‰์‹œ์ฆ‰์‹œ์ž๋™ ๋ฆฌ๋กœ๋“œ์ž๋™ (์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ)
๋ชจ๋‹ˆํ„ฐ๋ง
์•ก์„ธ์Šค ๋กœ๊ทธโœ…โœ…โœ…โœ…โœ…โœ…
์—๋Ÿฌ ๋กœ๊ทธโœ…โœ…โœ…โœ…โœ…โœ…
๋Œ€์‹œ๋ณด๋“œโŒโœ…โœ…โœ…โŒโœ… (๋‚ด์žฅ)
์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋งโŒโŒโœ… (GoAccess)โœ…โŒโœ…
๋กœ๊ทธ ๋ถ„์„ ๋„๊ตฌ๋ณ„๋„โŒโœ…โœ…๋ณ„๋„Prometheus/Grafana
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
๋ฐ์ดํ„ฐ๋ฒ ์ด์ŠคSQLite/MariaDBSQLitePostgreSQL
๋ฐฑ์—…์ˆ˜๋™์ž๋™ Vacuum์ˆ˜๋™
๊ธฐํƒ€ ๊ธฐ๋Šฅ
Stream (TCP/UDP)โœ…โœ…โœ…โŒโœ…โœ…
์ปค์Šคํ…€ ์„ค์ •โœ…โœ… (์ œํ•œ์ )โœ…โœ… (์ œํ•œ์ )โœ…โœ…
ํ”Œ๋Ÿฌ๊ทธ์ธ/๋ชจ๋“ˆโœ… (๋งŽ์Œ)โŒโœ… (PHP-FPM)โŒโœ… (์ ์Œ)โœ… (๋ฏธ๋“ค์›จ์–ด)
์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌโŒโŒโŒโŒโŒโœ… (Docker/K8s)
๋ฉ€ํ‹ฐ ์•„ํ‚คํ…์ฒ˜โœ…โœ…amd64v2, arm64โœ…โœ…โœ…
์ปค๋ฎค๋‹ˆํ‹ฐ
์ปค๋ฎค๋‹ˆํ‹ฐ ํฌ๊ธฐ๋งค์šฐ ํผํผ (30k+ stars)์ค‘๊ฐ„ (1.6k+ stars)์ž‘์Œ (12 stars)ํผ๋งค์šฐ ํผ (50k+ stars)
๋ฌธ์„œํ™”๋งค์šฐ ์šฐ์ˆ˜์šฐ์ˆ˜์šฐ์ˆ˜๋ณดํ†ต๋งค์šฐ ์šฐ์ˆ˜์šฐ์ˆ˜
์—…๋ฐ์ดํŠธ ๋นˆ๋„์ •๊ธฐ์ ๋А๋ฆผ๋งค์šฐ ๋น ๋ฆ„ํ™œ๋ฐœ์ •๊ธฐ์ ๋งค์šฐ ๋น ๋ฆ„

๊ฒฐ๋ก 

๊ฐ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์†”๋ฃจ์…˜์€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ•์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ ํ™˜๊ฒฝ๊ณผ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ์ตœ์ ์˜ ์„ ํƒ์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์ธ ๊ฒฝํ—˜๊ณผ ์„ ํƒ

์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•ด๋ณธ ๊ฒฐ๊ณผ, ๊ทธ๋ฆฌ๊ณ  ํ™ˆ๋žฉ์ด๋ผ๋Š” ๋ฌผ๋ฆฌ์ ์ธ ์ œ์•ฝ์œผ๋กœ ์ธํ•ด ์ €๋Š” NGINX Proxy Guard๋กœ ์ •์ฐฉํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ™ˆ๋žฉ์€ ์ƒ๊ฐ๋ณด๋‹ค ํ•ดํ‚น ์œ„ํ˜‘์— ์•ˆ์ „ํ•˜๋‹ค๋Š” ์•ˆ์ผํ•œ ์ƒ๊ฐ์œผ๋กœ ์žˆ์—ˆ์ง€๋งŒ, ์‹ค์ œ๋กœ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์„ํ•ด๋ณด๊ณ  NPG์˜ ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์‹œ๊ฐ์ ์œผ๋กœ ํ™•์ธํ–ˆ์„ ๋•Œ ์ œ๊ฐ€ ์ •๋ง ์•ˆ์ผํ•˜๊ฒŒ ๋ฐฉ์น˜ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ **”๋ณด์•ˆ์€ ์ง€๋‚˜์ณ์„œ ๋‚˜์  ๊ฒƒ์ด ์—†๋‹ค” ๋ผ๋Š” ๋ง์— ๋‹ค์‹œ ํ•œ๋ฒˆ ๋™์˜ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ณด์•ˆ ํŒ: ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๋ฐฉํ™”๋ฒฝ โ†’ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ(+WAF) โ†’ ์„œ๋ฒ„์™€ ๊ฐ™์€ 2์ค‘, 3์ค‘ ๋ ˆ์ด์–ด๋ฅผ ๊ตฌ์„ฑํ•˜์‹œ๋Š” ๊ฒƒ์„ ๊ฐ•๋ ฅํžˆ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

์†”๋ฃจ์…˜๋ณ„ ์š”์•ฝ

NGINX

  • ์ตœ๊ณ ์˜ ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ์„ค์ •์ด ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค
  • ๋Œ€๊ทœ๋ชจ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์ด๋‚˜ ์„ธ๋ฐ€ํ•œ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ตœ์„ ์˜ ์„ ํƒ์ž…๋‹ˆ๋‹ค

NGINX Proxy Manager

  • ์‚ฌ์šฉ ํŽธ์˜์„ฑ์— ์ดˆ์ ์„ ๋งž์ถ˜ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค
  • ํ™ˆ๋žฉ์ด๋‚˜ ์ค‘์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•˜๋ฉฐ, ์•ˆ์ •์„ฑ์€ ๋†’์ง€๋งŒ ์ตœ์‹  ๊ธฐ๋Šฅ์€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค

NPMplus

  • NPM์˜ ํŽธ๋ฆฌํ•จ์— ์ตœ์‹  ๋ณด์•ˆ ๊ธฐ๋Šฅ๊ณผ ํ”„๋กœํ† ์ฝœ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค
  • ํ™ˆ๋žฉ์—์„œ ํ”„๋กœ๋•์…˜๊ธ‰ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ด์ƒ์ ์ด๋ฉฐ, HTTP/3, WAF, IPS ๋“ฑ์„ GUI๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

NGINX Proxy Guard

  • ๋ณด์•ˆ์— ํŠนํ™”๋œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค
  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฉํ™”๋ฒฝ, ๋ด‡ ์ฐจ๋‹จ, GeoIP ํ•„ํ„ฐ๋ง ๋“ฑ์ด ํ•„์ˆ˜์ ์ธ ํ™˜๊ฒฝ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค
  • ์•„์ง ์ดˆ๊ธฐ ๋‹จ๊ณ„์ง€๋งŒ ๋น ๋ฅด๊ฒŒ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

Caddy

  • ํ˜„๋Œ€์ ์ด๊ณ  ์ž๋™ํ™”์— ๊ฐ•ํ•œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค
  • ๋น ๋ฅธ ๋ฐฐํฌ์™€ ๊ฐ„๋‹จํ•œ ์„ค์ •์„ ์›ํ•œ๋‹ค๋ฉด ์ตœ๊ณ ์˜ ์„ ํƒ์ด๋ฉฐ, ์ž๋™ HTTPS์™€ HTTP/3 ์ง€์›์€ ํฐ ์žฅ์ ์ž…๋‹ˆ๋‹ค

Traefik

  • ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์— ํŠนํ™”๋œ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค
  • Docker/Kubernetes์™€์˜ ํ†ตํ•ฉ์ด ๋›ฐ์–ด๋‚˜๋ฉฐ, ์ž๋™ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ๊ฐ€ ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค
  • ๋™์  ํ™˜๊ฒฝ๊ณผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค

์ผ๋ฐ˜์ ์ธ ์ถ”์ฒœ

  • ํ™ˆ๋žฉ ํ™˜๊ฒฝ (GUI ์„ ํ˜ธ): NPMplus ๋˜๋Š” NGINX Proxy Guard
  • ํ™ˆ๋žฉ ํ™˜๊ฒฝ (Docker ๊ธฐ๋ฐ˜): Traefik ๋˜๋Š” Caddy
  • ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ดํ•‘/๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค: Caddy ๋˜๋Š” Traefik
  • ์ปจํ…Œ์ด๋„ˆ ๋™์  ํ™˜๊ฒฝ: Traefik
  • ๋Œ€๊ทœ๋ชจ ํ”„๋กœ๋•์…˜: NGINX
  • ๋ณด์•ˆ ์ตœ์šฐ์„ : NPMplus ๋˜๋Š” NGINX Proxy Guard

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•ด์ฃผ์„ธ์š”!