[실습] 10. Secure Link(만료 링크) + envsubst로 배포 자동화
2026. 1. 4. 21:26

NGINX 10 — Secure Link(만료 링크) + envsubst로 배포 자동화까지

nginx diagram
구성도

핵심 정리

1) Secure URL / Secure Link의 목적

  • 다운로드 URL이 외부에 공유되더라도, 토큰이 없으면 접근할 수 없게 만드는 방식입니다.
  • 여기에 만료 시간(expiry)을 붙이면 “일정 시간만 유효한 링크”를 만들 수 있습니다.

2) envsubst로 환경변수 주입(컨테이너 배포에서 자주 쓰는 패턴)

  • 운영/개발/스테이징마다 upstream 주소나 포트를 바꿔야 할 때, 템플릿을 만들어 두면 관리가 쉬워집니다.
  • 컨테이너 시작 전에 envsubst로 치환해 nginx.conf를 생성하는 형태를 많이 사용합니다.
# (개념 예시) secure_link / secure_link_md5는 모듈/구성에 따라 값이 달라질 수 있습니다.
# 핵심은 "요청 값 + 비밀키"로 토큰을 만들고, NGINX가 같은 규칙으로 검증한다는 점입니다.

location /download/ {
  # secure_link ...;
  # secure_link_md5 ...;

  if ($secure_link = "") { return 403; }   # 토큰 없음/위변조
  if ($secure_link = "0") { return 410; }  # 만료
}
# nginx.conf.template (예시)
upstream app {
  server ${UPSTREAM_HOST}:${UPSTREAM_PORT};
}

server {
  location / {
    proxy_pass http://app;
  }
}
# entrypoint에서 envsubst로 실제 conf 생성(예시)
envsubst '${UPSTREAM_HOST} ${UPSTREAM_PORT}'   < /etc/nginx/templates/nginx.conf.template   > /etc/nginx/conf.d/default.conf
운영 팁
  • secure link는 ‘링크 공유’를 전제로 하므로, 토큰 생성/검증 규칙을 코드/운영팀 모두가 이해할 수 있게 문서화해 두시면 좋습니다.
  • envsubst 템플릿은 ‘치환 변수 이름’을 일관되게 관리하면, 배포 자동화에서 실수가 크게 줄어듭니다.

참고 링크