
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
一个轻量级、预配置的Nginx容器,支持HTTP 2.0、TLS1.3并获得SSL Labs A评级
当前版本:
开发版本:
Nginx是一款Web服务器,也可用作反向代理、负载均衡器、邮件代理和HTTP缓存。(***)
此镜像提供预配置的Nginx环境,支持TLS 1.3和HTTP 2.0。无需修改配置即可启动安全的TLS保护服务器(默认使用自签名证书),其配置在SSL Labs评级中获得A等级。
最简单的启动命令:
bashdocker run -d -p 80:80 -p 443:443 docker.xuanyuan.run/jschnabel/nginx
或使用docker-compose:
yamlservices: nginx: image: docker.xuanyuan.run/jschnabel/nginx container_name: nginx ports: - 80:80 - 443:443
启动后,通过浏览器访问服务器IP或域名,可看到测试页面。
通过挂载目录到/media/data/webroot来托管自定义静态内容:
yamlservices: nginx: image: docker.xuanyuan.run/jschnabel/nginx container_name: nginx ports: - 80:80 - 443:443 volumes: - /media/docker/volumes/nginx/webroot:/media/data/webroot
上述示例中,主机目录/media/docker/volumes/nginx/webroot中的所有数据将作为网站内容发布。
默认自签名证书会导致浏览器警告,建议使用Let's Encrypt证书。以下是两种获取和配置证书的方法:
使用ACME.sh
<your.domain>为实际域名):bashacme.sh --issue -d <your.domain> --cert-file /media/docker/volumes/nginx/webroot/cert.pem --key-file /media/docker/volumes/nginx/webroot/key.pem --fullchain-file /media/docker/volumes/nginx/webroot/fullchain.pem --reloadcmd "docker restart nginx"
证书文件生成在:
/media/docker/volumes/nginx/webroot/cert.pem /media/docker/volumes/nginx/webroot/key.pem /media/docker/volumes/nginx/webroot/fullchain.pem
在docker-compose中挂载证书:
yamlservices: nginx: image: docker.xuanyuan.run/jschnabel/nginx container_name: nginx ports: - 80:80 - 443:443 volumes: - /media/docker/volumes/nginx/webroot:/media/data/webroot - /etc/letsencrypt/live/<your.domain>/fullchain.pem:/media/data/certs/default_cert.pem:ro - /etc/letsencrypt/live/<your.domain>/privkey.pem:/media/data/certs/default_key.pem:ro
使用Certbot
bashcertbot certonly --webroot --webroot-path /media/docker/volumes/nginx/webroot --rsa-key-size 4096 --renew-by-default -d <your.domain>
证书文件生成在:
/etc/letsencrypt/live/<your.domain>/fullchain.pem /etc/letsencrypt/live/<your.domain>/privkey.pem
挂载证书(配置同ACME.sh方法步骤3)。
通过挂载配置文件到/media/data/sites-enabled(站点配置)和/media/data/streams(流配置)来自定义Nginx行为。
docker-compose配置
yamlservices: nginx: image: docker.xuanyuan.run/jschnabel/nginx container_name: nginx ports: - 80:80 - 443:443 volumes: - /media/docker/volumes/nginx/webroot:/media/data/webroot - /etc/letsencrypt/live/<your.domain>/fullchain.pem:/media/data/certs/default_cert.pem:ro - /etc/letsencrypt/live/<your.domain>/privkey.pem:/media/data/certs/default_key.pem:ro - /media/docker/volumes/nginx/sites:/media/data/sites-enabled - /media/docker/volumes/nginx/streams:/media/data/streams
自定义站点配置示例
创建文件挂载到/media/data/sites-enabled:
nginxserver { listen 80; listen [::]:80; server_name <your.domain>; return 301 https://$host$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name <your.domain>; ssl_certificate /media/data/certs/<your.domain>.pem; ssl_certificate_key /media/data/certs/<your.domain>.pem; include /media/data/snippets/gzip.conf; include /media/data/snippets/header.conf; include /media/data/snippets/tls.conf; location / { root /media/data/webroot/<your.domain>; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /media/data/webroot/<your.domain>; } }
自定义流配置示例
创建文件挂载到/media/data/streams:
stream { upstream mqtt { server mosquitto:1883; } server { listen 8883 ssl; proxy_pass mqtt; ssl_certificate /media/data/certs/default_cert.pem; ssl_certificate_key /media/data/certs/default_key.pem; include /media/data/snippets/tls_stream.conf; } server { listen 1883; proxy_pass mqtt; } }
通过包含basic_auth.conf snippet启用基本认证:
nginxlocation / { include /media/data/snippets/basic_auth.conf; root /media/data/webroot/<your.domain>; index index.html index.htm; }
执行以下命令添加用户(替换nginx_proxy为容器名):
bashdocker exec -it nginx_proxy /media/data/scripts/addUser.sh /media/data/passwords/htpasswd
通过包含webdav.conf snippet配置WebDAV共享(建议配合认证使用):
nginxlocation / { include /media/data/snippets/basic_auth.conf; include /media/data/snippets/webdav.conf; }
默认日志文件(访问日志和错误日志)存储在/media/data/logs,可挂载此目录进行外部日志处理:
yamlvolumes: - /media/docker/volumes/nginx/logs:/media/data/logs
密钥交换(Key Exchange)100%
使用4096位RSA证书或ECDSA P-384/P-521证书:
ACME.sh生成4096位RSA证书:
bashacme.sh --issue --keylength 4096 -d <your.domain> ...
ACME.sh生成ECDSA P-384证书:
bashacme.sh --issue --ecc --keylength ec-384 -d <your.domain> ...
Certbot生成4096位RSA证书:
bashcertbot certonly --rsa-key-size 4096 ...
密码套件强度(Cipher Strength)100%
使用tls_strong.conf snippet(移除128位密码套件,可能影响旧客户端兼容性):
nginxserver { # ... 其他配置 ... include /media/data/snippets/tls_strong.conf; # 替换原tls.conf # ... 其他配置 ... }
通过设置环境变量DISABLETLS=true禁用TLS:
yamlservices: nginx: image: jschnabel/nginx container_name: nginx environment: - DISABLETLS="true" ports: - 80:80 volumes: - /media/docker/volumes/nginx/webroot:/media/data/webroot
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 jschnabel/nginx 相关的常用 Docker 镜像,适用于 反向代理、负载均衡、静态资源服务 等不同场景: