
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
为网站添加SSL证书的最简单解决方案
!build !build
该Docker镜像基于OpenResty和lua-resty-auto-ssl,可自动生成和续期Let's Encrypt SSL证书。内置合理的SSL设置、HTTP/2和WebSocket支持,开箱即用。支持通过环境变量指定允许的域名和简单代理,也可轻松覆盖nginx.conf以满足自定义需求。镜像状态:已用于生产环境,未来可能添加向后兼容的变更。
以下命令可快速为博客或应用生成并自动续期SSL证书:
Bash# 替换为实际值 export DOMAIN=yourdomain.com export APP_ADDRESS=localhost:8080 # 安装Docker后执行以下命令 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 \ valian/docker-nginx-auto-ssl # 查看容器日志以确认是否正常运行 docker logs nginx-auto-ssl
yaml# docker-compose.yml version: '2' services: nginx: image: valian/docker-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
注意:上述两种方式均要求yourdomain.com的请求能够到达部署的Nginx(即服务器已正确配置DNS记录)。
Bashdocker run -d \ --name nginx-auto-ssl \ --restart on-failure \ -p 80:80 \ -p 443:443 \ -e ALLOWED_DOMAINS=example.com \ -e SITES='example.com=localhost:5432;*.example.com=localhost:8080' \ valian/docker-nginx-auto-ssl
| 变量 | 示例 | 描述 |
|---|---|---|
| ALLOWED_DOMAINS | (www|api).example.com、example.com、([a-z]+.)?example.com | 允许的域名正则模式。内部使用https://github.com/openresty/lua-nginx-module#ngxrematch%E3%80%82%E9%BB%98%E8%AE%A4%E5%85%81%E8%AE%B8%E6%89%80%E6%9C%89%E5%9F%9F%E5%90%8D |
| DIFFIE_HELLMAN | true | 强制重新生成dhparam.pem。未指定时使用默认值 |
| SITES | db.com=localhost:5432; *.app.com=localhost:8080、_=localhost:8080 | 定义多个代理的快捷方式,格式为domain1=endpoint1; domain2=endpoint2。代理的默认模板见https://github.com/Valian/docker-nginx-auto-ssl/blob/master/snippets/server-proxy.conf%E3%80%82%E5%90%8D%E7%A7%B0%60_%60%E8%A1%A8%E7%A4%BA%E9%BB%98%E8%AE%A4%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%88%E5%90%8CNginx%E9%85%8D%E7%BD%AE%EF%BC%89 |
| FORCE_HTTPS | true、false | 若为true,自动在resty-server-http.conf中添加HTTP到HTTPS的重定向。默认值为true |
| LETSENCRYPT_URL | https://acme-v02.api.letsencrypt.org/directory、https://acme-staging-v02.api.letsencrypt.org/directory | Let's Encrypt服务器URL |
| RESOLVER_ADDRESS | 8.8.8.8、127.0.0.53 | 用于OCSP stapling的DNS解析器。默认值为8.8.8.8。若要禁用IPv6,可追加ipv6=off,例如8.8.8.8 ipv6=off |
| STORAGE_ADAPTER | file、redis | 存储生成证书的位置。最佳实践是在负载均衡环境中使用redis,以避免OpenResty的I/O阻塞并实现多容器证书共享。默认值为file |
| REDIS_HOST | hostname、ip address | Redis存储适配器的主机名。当STORAGE_ADAPTER=redis时必填 |
| REDIS_PORT | port number | Redis端口号。默认值为6379 |
| REDIS_DB | db_number | lua-resty-auto-ssl用于保存证书的Redis数据库编号。默认值为0 |
| REDIS_KEY_PREFIX | some-prefix | 为Redis中存储的所有键添加前缀。默认值为空字符串 |
额外的服务器块会自动从/etc/nginx/conf.d/*.conf加载。若需提供自定义配置,可使用卷挂载或创建自定义镜像。
示例服务器配置(例如命名为server.conf):
nginxserver { listen 443 ssl default_server; # 务必包含此行! include resty-server-https.conf; location / { proxy_pass http://app; } location /api { proxy_pass http://api; } }
卷挂载方式:
Bash# 将$PWD替换为包含自定义配置的目录 docker run -d \ --name nginx-auto-ssl \ --restart on-failure \ -p 80:80 \ -p 443:443 \ -v $PWD:/etc/nginx/conf.d \ valian/docker-nginx-auto-ssl
自定义镜像方式:
DockerfileFROM valian/docker-nginx-auto-ssl # 将.替换为包含自定义配置的目录 COPY . /etc/nginx/conf.d
构建并运行:
Bashdocker build -t docker-nginx-auto-ssl . docker run [YOUR_OPTIONS] docker-nginx-auto-ssl
需通过卷挂载或自定义镜像覆盖/usr/local/openresty/nginx/conf/server-proxy.conf。模板支持$SERVER_NAME和$SERVER_ENDPOINT变量。
示例模板:
nginxserver { listen 443 ssl; server_name $SERVER_NAME; include resty-server-https.conf; location / { proxy_pass http://$SERVER_ENDPOINT; } }
若其他自定义选项无法满足需求,可提供自己的nginx.conf。
示例Dockerfile:
DockerfileFROM valian/docker-nginx-auto-ssl COPY nginx.conf /usr/local/openresty/nginx/conf/
最小可用nginx.conf:
nginxevents { worker_connections 1024; } http { # 必须包含 include resty-http.conf; server { listen 443 ssl; # 必须包含 include resty-server-https.conf; # 在此添加自定义location } server { listen 80 default_server; # 必须包含 include resty-server-http.conf; } }
支持SITES和conf.d包含的最小nginx.conf:
nginxevents { worker_connections 1024; } http { include resty-http.conf; server { listen 80 default_server; include resty-server-http.conf; } # 可在此处或conf.d中插入自定义块 include /etc/nginx/conf.d/*.conf; }
构建并运行:
Bashdocker build -t docker-nginx-auto-ssl . docker run [YOUR_OPTIONS] docker-nginx-auto-ssl
$SITES变量MIT
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务