nginx-auto-ssl是一个Docker镜像,用于通过Let's Encrypt和OpenResty自动生成SSL证书,默认包含合理的SSL配置、HTTP/2和WebSocket支持。该镜像支持通过环境变量指定允许的域名和简单代理,并可轻松覆盖nginx.conf以满足自定义需求。本镜像基于Valian/docker-nginx-auto-ssl分叉,针对Elestio需求定制,增加了速率限制和输出缓存功能。
镜像状态:已用于生产环境。未来可能会添加向后兼容的变更。
以下命令可快速为指定域名生成并自动续期SSL证书:
bash# 替换为实际值 export DOMAIN=yourdomain.com export APP_ADDRESS=localhost:8080 # 运行容器 docker run -d \ --name nginx-auto-ssl \ --restart on-failure \ --network host \ -e ALLOWED_DOMAINS="$DOMAIN" \ -e SITES="$DOMAIN=$APP_ADDRESS" \ -v ssl-data:/etc/resty-auto-ssl \ elestio/nginx-auto-ssl # 查看日志确认运行状态 docker logs nginx-auto-ssl
注意:确保服务器已正确配置DNS,使域名解析指向当前服务器。
创建docker-compose.yml文件:
yamlversion: '2' services: nginx: image: elestio/nginx-auto-ssl restart: on-failure ports: - 80:80 - 443:443 volumes: - ssl_data:/etc/resty-auto-ssl environment: ALLOWED_DOMAINS: 'yourdomain.com' SITES: 'yourdomain.com=myapp:80' # 你的应用服务,监听SITES中指定的端口 myapp: image: nginx volumes: ssl_data:
启动服务:
bashdocker-compose up -d
| 变量 | 示例 | 描述 |
|---|---|---|
| ALLOWED_DOMAINS | (www|api).example.com、example.com、([a-z]+.)?example.com | 允许的域名正则模式,使用ngx.re.match匹配。默认允许所有域名 |
| DIFFIE_HELLMAN | true | 强制重新生成dhparam.pem。未指定时使用默认密钥 |
| SITES | db.com=localhost:5432; *.app.com=localhost:8080、_=localhost:8080 | 多代理快捷配置,格式为域名1=端点1; 域名2=端点2。_表示默认服务器(同Nginx配置) |
| FORCE_HTTPS | true、false | 若为true,自动添加HTTP到HTTPS的重定向规则。默认值为true |
| LETSENCRYPT_URL | [***]、[***] | Let's Encrypt服务器URL,用于指定生产或测试环境 |
| RESOLVER_ADDRESS | 8.8.8.8、127.0.0.53 ipv6=off | OCSP装订使用的DNS解析器地址。默认值为8.8.8.8。添加ipv6=off可禁用IPv6 |
| STORAGE_ADAPTER | file、redis | 证书存储位置。redis适用于负载均衡环境,避免I/O阻塞。默认值为file |
| REDIS_HOST | hostname、ip地址 | Redis存储的主机名。当STORAGE_ADAPTER=redis时必填 |
| REDIS_PORT | 6379 | Redis服务端口。默认值为6379 |
| REDIS_DB | 0 | 存储证书的Redis数据库编号。默认值为0 |
| REDIS_KEY_PREFIX | some-prefix | Redis键名前缀。默认值为空字符串 |
conf.d添加配置可通过挂载卷或自定义镜像的方式,在/etc/nginx/conf.d/目录下添加额外的Nginx配置文件(.conf后缀)。
卷挂载方式:
bashdocker run -d \ --name nginx-auto-ssl \ -p 80:80 -p 443:443 \ -v $PWD/conf.d:/etc/nginx/conf.d \ # 挂载本地conf.d目录 -v ssl-data:/etc/resty-auto-ssl \ elestio/nginx-auto-ssl
自定义镜像方式:
DockerfileFROM elestio/nginx-auto-ssl COPY ./conf.d /etc/nginx/conf.d # 复制本地conf.d目录到镜像
示例配置文件(server.conf):
nginxserver { listen 443 ssl; server_name api.example.com; include resty-server-https.conf; # 必须包含的SSL配置 location / { proxy_pass [***] proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
SITES模板通过覆盖/usr/local/openresty/nginx/conf/server-proxy.conf文件,自定义SITES变量生成的代理配置模板。
示例模板:
nginxserver { listen 443 ssl; server_name $SERVER_NAME; include resty-server-https.conf; location / { proxy_pass [***] proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # 添加WebSocket支持 } }
通过卷挂载覆盖模板:
bashdocker run -d \ --name nginx-auto-ssl \ -v $PWD/server-proxy.conf:/usr/local/openresty/nginx/conf/server-proxy.conf \ -e SITES="ws.example.com=websocket-service:8080" \ elestio/nginx-auto-ssl
nginx.conf当其他自定义方式无法满足需求时,可提供完整的nginx.conf配置文件。
示例Dockerfile:
DockerfileFROM elestio/nginx-auto-ssl COPY nginx.conf /usr/local/openresty/nginx/conf/ # 覆盖默认nginx.conf
最小化可用配置(nginx.conf):
nginxevents { worker_connections 1024; } http { include resty-http.conf; # 必须包含的基础HTTP配置 # HTTPS服务器 server { listen 443 ssl; include resty-server-https.conf; # 必须包含的SSL配置 server_name example.com; location / { proxy_pass [***] } } # HTTP服务器(用于Let's Encrypt验证和重定向) server { listen 80 default_server; include resty-server-http.conf; # 必须包含的HTTP配置 } }
构建并运行自定义镜像:
bashdocker build -t custom-nginx-auto-ssl . docker run -d --name nginx -p 80:80 -p 443:443 custom-nginx-auto-ssl
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429