
bh42/nginx-reverseproxy-letsencrypt本镜像(GitHub仓库)包含一个Nginx反向代理,通过acme.sh集成Let's Encrypt实现SSL/TLS证书自动管理。可在Docker Hub获取:bh42/nginx-reverseproxy-letsencrypt。
Nginx配置支持用户自定义,容器会自动处理证书生成与更新,适用于需要HTTPS加密的Web服务反向代理场景。
基于官方Nginx Alpine镜像(nginx:alpine)构建,体积小且资源占用低。
镜像使用两个卷,需在运行时挂载:
/certs:存储所有证书(含dhparam.pem),无需手动操作,容器会自动生成和管理。/nginx:存放Nginx配置文件,需至少包含nginx.conf,其他配置(如虚拟主机配置)可按需添加。支持以下环境变量配置:
DRYRUN:任意值启用Let's Encrypt测试环境(用于测试,避免正式环境请求限制)。KEYLENGTH:Let's Encrypt证书密钥长度,可选值:1024、2048、4096、ec-256、ec-384、ec-521等,默认4096。DHPARAM:Diffie-Hellman参数密钥长度,默认2048(生成耗时较长,可能需要数分钟以上)。SERVICE_HOST_x:需申请证书的域名,每个域名对应一个变量(如SERVICE_HOST_1、SERVICE_HOST_2等)。SERVICE_SUBJ_x:对应SERVICE_HOST_x的自签名证书主题,格式:/C=国家代码/ST=省份/L=城市/O=公司/OU=组织/CN=域名(非必需,仅用于自签名证书标识)。以下示例部署两个域名的反向代理:
bashdocker run \ -p 80:80 \ -p 443:443 \ -v /home/user/my_nginx_conf:/nginx:ro \ -v /home/user/my_certs:/certs \ -e KEYLENGTH=ec-521 \ -e DHPARAM=4096 \ -e SERVICE_HOST_1=[***] \ -e SERVICE_HOST_2=subdomain.mydomain.com \ --name reverse-proxy \ -t -d bh42/nginx-reverseproxy-letsencrypt:latest
yamlversion: '3.7' services: proxy: container_name: "proxy" image: bh42/nginx-reverseproxy-letsencrypt:latest environment: - KEYLENGTH=ec-521 # 证书密钥长度 - DHPARAM=4096 # DH参数长度 - SERVICE_HOST_1=[***] # 第一个域名 - SERVICE_HOST_2=subdomain.mydomain.com # 第二个域名 restart: unless-stopped tty: true ports: - "80:80" # HTTP端口(用于ACME验证) - "443:443" # HTTPS端口 volumes: - /home/user/my_certs:/certs # 证书存储卷 - /home/user/my_nginx_conf:/nginx:ro # Nginx配置卷(只读)
证书路径说明:由于证书存储在/certs目录,Nginx配置中需使用该路径引用证书文件。例如:
nginxssl_certificate /certs/your.domain.tld/fullchain.cer; ssl_certificate_key /certs/your.domain.tld/your.domain.tld.key; ssl_dhparam /certs/dhparam.pem;
配置文件位置:/nginx卷中的配置文件会被复制到容器内的/etc/nginx/conf.d目录,因此nginx.conf需正确引用该目录下的配置。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务