自定义域名迷你站的SSL Proxy搭建及证书自动管理咨询
迷你站自定义域名SSL代理可行实现方案
技术栈选型
- 反向代理选用Nginx,成熟稳定,原生支持SNI域名识别、动态证书加载、七层流量转发,完全匹配需求
- 证书管理使用Certbot + Let's Encrypt HTTP-01验证方式,不需要客户操作DNS,只要配置好CNAME即可完成证书签发
- 自动化调度用Shell脚本+系统定时任务即可实现全流程无人值守,有内部管理系统的可以直接把脚本对接进现有后台
核心部署配置逻辑
1. 代理服务器前置准备
首先给代理服务器配置公网IP,开放防火墙80、443端口,安装好Nginx和Certbot。
先配置Nginx默认80端口规则,统一处理HTTP请求,单独预留ACME验证路径,其余请求强制跳转HTTPS:
server { listen 80 default_server; server_name _; # 处理Let's Encrypt证书验证请求 location /.well-known/acme-challenge/ { root /var/www/certbot; allow all; } location / { return 301 https://$host$request_uri; } }
创建对应的目录:
mkdir -p /etc/nginx/conf.d /var/www/certbot
2. 自定义域名自动绑定脚本
写一个可直接调用的Shell脚本,客户提交自定义域名后只要执行脚本就能完成全流程配置,示例脚本逻辑:
#!/bin/bash # 入参说明:$1=客户自定义域名 $2=对应迷你站域名 如site1.example.com CUSTOM_DOMAIN=$1 TARGET_MINISITE=$2 # 第一步:调用certbot签发SSL证书 certbot certonly --webroot -w /var/www/certbot -d ${CUSTOM_DOMAIN} --agree-tos --email your-admin@your-domain.com --non-interactive # 第二步:生成对应Nginx站点配置 cat > /etc/nginx/conf.d/${CUSTOM_DOMAIN}.conf << EOF server { listen 443 ssl; server_name ${CUSTOM_DOMAIN}; ssl_certificate /etc/letsencrypt/live/${CUSTOM_DOMAIN}/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/${CUSTOM_DOMAIN}/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location / { proxy_pass https://${TARGET_MINISITE}; proxy_set_header Host \$host; proxy_set_header X-Real-IP \$remote_addr; proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto \$scheme; } } EOF # 第三步:校验配置并重载Nginx生效 nginx -t && systemctl reload nginx
给脚本添加执行权限后,只要执行./bind_domain.sh video.customer.com site1.example.com就能完成证书生成、代理配置全流程。
3. 证书自动续期配置
Certbot安装后默认会添加系统定时任务校验证书续期,你只要额外配置续期后自动重载Nginx的钩子即可,编辑/etc/letsencrypt/cli.ini添加以下配置:
renew_hook = systemctl reload nginx
也可以手动添加crontab任务兜底:
0 2 * * * certbot renew --quiet --deploy-hook "systemctl reload nginx"
4. 业务流程适配
完全匹配你预期的工作流:
- 客户提交需要绑定的自定义域名和对应的迷你站需求
- 你侧生成迷你站后,执行上述脚本完成代理配置和证书生成
- 告知客户将自定义域名配置CNAME指向你的代理服务器即可正常访问
如果有客户需要泛域名证书,要把证书验证方式换成DNS-01,需要客户配合添加TXT验证记录,如果你侧提供DNS解析服务也可以自动完成验证
轻量化替代方案
如果客户量级不大,也可以用Caddy作为反向代理,Caddy原生支持自动HTTPS,不需要手动配置Certbot,只要在Caddyfile里添加对应规则即可自动完成证书签发、续期、流量转发,配置更简洁:
video.customer.com { reverse_proxy https://site1.example.com }
内容的提问来源于stack exchange,提问作者Dan Burdetsky
相关产品推荐
相关产品推荐

