본문 바로가기
IT생활

TrueNAS SCALE을 이용한 HTTPS CDN 구축 방법

by 우물 밖 개구리. 2025. 3. 15.
반응형

TrueNAS SCALE을 이용한 HTTPS CDN 구축 방법

TrueNAS SCALE을 기반으로 HTTPS CDN(Content Delivery Network)을 구축하려면, 기본적으로 웹 서버, 캐싱 프록시, HTTPS 인증서 및 보안 설정이 필요하다.


🚀 1. 필요한 구성 요소

CDN을 구축하기 위해 다음과 같은 요소를 설정해야 한다.

요소  역할
TrueNAS SCALE 기본 스토리지 및 파일 제공
NGINX (또는 Caddy) 웹 서버 및 리버스 프록시 역할
Let's Encrypt / Cloudflare SSL HTTPS 인증서 발급 및 자동 갱신
FastCGI 캐싱 or Redis 캐싱 최적화
GeoDNS (선택사항) 여러 지역에 캐시 서버 배포 시 사용
Fail2Ban / 방화벽 보안 강화

🛠 2. TrueNAS SCALE에 HTTPS CDN 구축하기

1️⃣ NGINX 설치 및 설정

먼저, TrueNAS SCALE의 앱스 또는 Docker 컨테이너를 이용해 NGINX를 배포한다.

📌 방법 1: TrueNAS 앱스토어를 이용한 설치

  1. TrueNAS SCALE의 앱스토어 → NGINX Proxy Manager 설치
  2. 설정에서 도메인 및 SSL 적용
  3. 캐시 옵션 활성화

📌 방법 2: Docker로 NGINX 설치

TrueNAS SCALE의 Kubernetes 지원 기능을 이용해 NGINX 컨테이너를 배포할 수도 있다.

docker run -d \
  --name my-cdn \
  -p 80:80 -p 443:443 \
  -v /mnt/data/cdn:/usr/share/nginx/html \
  -v /mnt/data/nginx.conf:/etc/nginx/nginx.conf \
  nginx

💡 위 명령어에서 /mnt/data/cdn에 CDN용 파일을 저장하고, nginx.conf를 수동 설정할 수 있다.


2️⃣ HTTPS 적용 (Let's Encrypt or Cloudflare SSL)

HTTPS를 사용하려면 SSL 인증서가 필요하다.

📌 방법 1: Let's Encrypt + Certbot 사용

apt install certbot python3-certbot-nginx -y
certbot --nginx -d cdn.example.com
  • 자동으로 NGINX 설정을 수정해 HTTPS 적용
  • 90일마다 인증서 자동 갱신 (certbot renew --dry-run으로 확인)

📌 방법 2: Cloudflare SSL 적용

  1. Cloudflare에서 SSL/TLS 설정 → "Flexible" 또는 "Full (Strict)" 선택
  2. Cloudflare Origin Certificate를 생성하여 NGINX에 적용
  3. nginx.conf 파일을 수정하여 Cloudflare SSL 사용
server {
    listen 443 ssl;
    server_name cdn.example.com;

    ssl_certificate /etc/nginx/cloudflare-origin.pem;
    ssl_certificate_key /etc/nginx/cloudflare-origin-key.pem;

    location / {
        root /mnt/data/cdn;
        index index.html;
    }
}

💡 Cloudflare SSL은 인증서 자동 갱신이 필요 없음.


3️⃣ 캐싱 최적화 (FastCGI + Redis)

CDN의 성능을 높이려면 캐싱을 최적화해야 한다.

📌 NGINX FastCGI 캐싱 활성화

nginx.conf에 캐시 설정을 추가한다.

fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=FASTCGI_CACHE:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

server {
    location / {
        fastcgi_cache FASTCGI_CACHE;
        fastcgi_cache_valid 200 301 302 10m;
        fastcgi_cache_use_stale error timeout updating;
        root /mnt/data/cdn;
    }
}

📌 Redis 캐싱 활성화 (선택사항)

TrueNAS SCALE에 Redis를 설치하여 캐싱 성능을 높일 수도 있다.

docker run -d --name redis-cache -p 6379:6379 redis

그리고 NGINX에서 Redis 캐싱을 활성화:

server {
    location / {
        set $redis_key $uri;
        redis_pass redis-cache:6379;
        default_type application/octet-stream;
    }
}

4️⃣ 보안 강화 (Fail2Ban + 방화벽)

CDN은 보안 공격에 노출되기 쉬우므로 방어 기법이 필요하다.

📌 Fail2Ban 설정 (SSH, HTTP 공격 방지)

apt install fail2ban -y
nano /etc/fail2ban/jail.local

다음 설정 추가:

[nginx-http-auth]
enabled = true
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 3

Fail2Ban 활성화:

systemctl enable fail2ban
systemctl restart fail2ban

📌 방화벽 설정 (TrueNAS SCALE에서 방화벽 활성화)

TrueNAS Networking → Firewall Rules에서 아래 규칙 추가:
허용: 80, 443 (HTTP, HTTPS)
차단: 22 (SSH 원격 접속 제한)
차단: 기타 불필요한 포트


🚀 CDN 성능 튜닝 팁

1️⃣ NGINX gzip 압축 활성화

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

2️⃣ 브라우저 캐싱 설정

location / {
    expires 30d;
    add_header Cache-Control "public, max-age=2592000";
}

3️⃣ HTTP/2 및 Brotli 압축 사용

server {
    listen 443 ssl http2;
    brotli on;
    brotli_types text/plain text/css application/javascript;
}

4️⃣ Cloudflare CDN과 함께 사용하여 DDoS 방어

  • Cloudflare "Under Attack Mode" 활성화
  • WAF(Web Application Firewall) 설정

📝 결론: TrueNAS SCALE HTTPS CDN 구축 요약

TrueNAS에 NGINX 설치 (Docker or App Store)
Let's Encrypt 또는 Cloudflare SSL로 HTTPS 활성화
FastCGI 캐싱 또는 Redis로 속도 최적화
Fail2Ban + 방화벽으로 보안 강화
Cloudflare를 추가하여 DDoS 방어 및 캐싱 향상 가능

이 방법을 적용하면 안정적이고 빠른 HTTPS CDN을 구축할 수 있으며, 트래픽 부담을 줄이면서 보안도 강화할 수 있다.

반응형