๋ฆฌ๋ฒ์ค ํ๋ก์๋ ํ๋ ์น ์ธํ๋ผ์์ ํ์์ ์ธ ๊ตฌ์ฑ ์์์ ๋๋ค. ํ์ง๋ง ๋ฆฌ๋ฒ์ค ํ๋ก์๋ฅผ ์ ๋๋ก ์ดํดํ๊ธฐ ์ํด์๋ ๋จผ์ ํ๋ก์์ ๊ธฐ๋ณธ ๊ฐ๋ ๋ถํฐ ์์์ผ ํฉ๋๋ค. ์ด ๊ธ์์๋ ํ๋ก์์ ๊ธฐ์ด๋ถํฐ ์์ํ์ฌ ๋ค์ํ ๋ฆฌ๋ฒ์ค ํ๋ก์ ์๋ฃจ์ ์ ๋น๊ต ๋ถ์ํด๋ณด๋ ค ํฉ๋๋ค.
ํ๋ก์(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 ํด๋ฌ์คํฐ
- ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ
- ์ปจํ ์ด๋๊ฐ ์์ฃผ ์์ฑ/์ญ์ ๋๋ ๋์ ํ๊ฒฝ
- ์๋ํ๋ ์ค์ ๊ด๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ
์๋ฃจ์ ๋น๊ตํ
| ํญ๋ชฉ | NGINX | NGINX Proxy Manager | NPMplus | NGINX Proxy Guard | Caddy | Traefik |
|---|---|---|---|---|---|---|
| ๊ธฐ๋ณธ ์ ๋ณด | ||||||
| ๋ผ์ด์ผ์ค | BSD-2-Clause | MIT | MIT | MIT | Apache 2.0 | MIT |
| ๊ฐ๊ฒฉ | ๋ฌด๋ฃ | ๋ฌด๋ฃ | ๋ฌด๋ฃ | ๋ฌด๋ฃ | ๋ฌด๋ฃ | ๋ฌด๋ฃ |
| ๊ฐ๋ฐ ์ธ์ด | C | JavaScript/Node.js | JavaScript/Node.js + Shell | Go + TypeScript | Go | Go |
| ๋ฒ ์ด์ค ์ด๋ฏธ์ง | – | Debian | Alpine Linux | Custom | Alpine/Scratch | Alpine |
| ๊ด๋ฆฌ ๋ฐฉ์ | ||||||
| ์ค์ ๋ฐฉ์ | ์ค์ ํ์ผ | Web UI | Web UI | Web UI | Caddyfile | ๋ ์ด๋ธ/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/MariaDB | SQLite | PostgreSQL | – | – |
| ๋ฐฑ์ | – | ์๋ | ์๋ 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
์ด ๊ธ์ด ๋์์ด ๋์๋ค๋ฉด ๋๊ธ๋ก ์ฌ๋ฌ๋ถ์ ๊ฒฝํ์ ๊ณต์ ํด์ฃผ์ธ์!