Docker + Nginx + ZeroSSL – HTTPS 구성
HTTPS
요즘 웹사이트에서 HTTPS는 신뢰와 검색 노출의 기본 조건이다. 특히 Docker 기반 서버 환경에서는 nginx-proxy와 ZeroSSL을 이용해 무료로 SSL 인증서를 손쉽게 적용할 수 있다. 이 글에서는 Docker Compose 환경에서 ZeroSSL 기반 HTTPS를 완벽하게 구성하는 방법을 정리한다.
—
Nginx-Proxy와 ZeroSSL의 조합
jwilder/nginx-proxy는 도커 컨테이너의 호스트 이름을 자동으로 감지해 Reverse Proxy 설정을 자동화한다.
여기에 nginx-proxy/acme-companion을 함께 사용하면 SSL 인증서를 자동으로 발급하고 갱신까지 처리한다.
이때, ZeroSSL의 EAB(Elliptic Account Binding) 키를 사용하면 인증서 발급 한도를 넉넉하게 사용할 수 있다.
—
Docker Compose 예시 설정
version: “3”
services:
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
restart: always
ports:
– “80:80”
– “443:443”
volumes:
– /var/run/docker.sock:/tmp/docker.sock:ro
– ./certs:/etc/nginx/certs
– ./vhost.d:/etc/nginx/vhost.d
– ./html:/usr/share/nginx/html
acme-companion:
image: nginxproxy/acme-companion
container_name: nginx-proxy-acme
restart: always
environment:
– DEFAULT_EMAIL=admin@yourdomain.com
– ACME_CA_URI=https://acme.zerossl.com/v2/DV90
– ACME_EAB_KID=YOUR_EAB_KID
– ACME_EAB_HMAC_KEY=YOUR_EAB_HMAC_KEY
volumes_from:
– nginx-proxy
volumes:
– /var/run/docker.sock:/var/run/docker.sock:ro
– ./certs:/etc/nginx/certs
– ./acme:/etc/acme.sh
—
서비스 컨테이너 설정 예시
services:
web:
image: nginx:alpine
container_name: my-app
environment:
– VIRTUAL_HOST=example.com
– LETSENCRYPT_HOST=example.com
volumes:
– ./html:/usr/share/nginx/html
VIRTUAL_HOST와 LETSENCRYPT_HOST를 지정하면 자동으로 SSL이 설정된다.
—
ZeroSSL 사용 시 주의할 점
EAB 키는 1회성 발급이므로 안전하게 보관해야 한다.
인증서 자동 갱신은 acme-companion이 주기적으로 처리하지만, 로그 확인으로 정상 작동을 확인하는 것이 좋다.
기존 Let’s Encrypt 설정을 그대로 유지하면서 ZeroSSL로 전환해도 된다.
이 구성은 서버 관리 자동화와 보안 강화를 동시에 실현한다.
별도의 수동 인증서 갱신이나 설정 파일 수정 없이, 도커 컨테이너가 자동으로 SSL을 유지하는 환경을 만든다.
ZeroSSL은 발급 안정성과 관리 편의성 면에서 점점 더 선호되는 대안으로 자리 잡고 있다.

답글 남기기