
alexandzors/caddy这是基于caddyserver.com的第三方构建。请勿在生产环境中使用。此镜像仅为需要快速使用带有以下预安装插件的Docker镜像/二进制文件的用户提供。您始终可以通过下载页面生成自己的二进制文件。
Docker镜像和二进制文件均从Caddy源代码构建,仅包含以下提及的插件!
:#.#.# - 特定版本的Caddy稳定版(v2.7.6+,支持多架构):latest-l4 - 最新的Caddy稳定版本(包含所有模块+layer 4):#.#.#-l4 - 特定版本的Caddy稳定版(包含所有模块+layer 4):dev - 用于测试,请勿使用目前不计划提供Windows容器版本。
在默认模块基础上,预安装以下额外模块:
注意:sjtug/caddy2-filter已替换为caddyserver/replace-response
注意:RussellLuo/caddy-ext/ratelimit已替换为mholt/caddy-ratelimit
适用于需要快速部署带有预安装模块的Caddy服务器的场景,如:
首先创建外部网络:
bashdocker network create caddy-dockerinternal-net
yaml# 适用于<alexandzors/caddy> # 创建者:github.com/alexandzors 08-18-2023 version: '3' services: caddy: restart: always logging: driver: "json-file" options: max-size: "500k" max-file: "1" networks: - caddy image: alexandzors/caddy env_file: .env ports: - 80:80 - 443:443 volumes: - ${PWD}/Caddyfile:/etc/caddy/Caddyfile:ro # Caddy配置文件 - ${PWD}/config:/etc/caddy/config # 可选:外部配置文件 - ${PWD}/.data:/data # 证书存储目录 - ${PWD}/logs:/logs # 可选:日志文件目录 networks: caddy: name: caddy-dockerinternal-net external: true
shellCLOUDFLARETOKEN=YOUR_CLOUDFLARE_TOKEN_HERE # 替换为您的Cloudflare API令牌
更多详细配置可参考官方Caddy Docker镜像仓库。
用于通过Cloudflare DNS进行ACME挑战,实现HTTPS证书自动签发。
注意:需为Caddy创建范围API令牌,请勿使用全局API密钥。详见此处。
json{ "module": "acme", "challenges": { "dns": { "provider": { "name": "cloudflare", "api_token": "{env.CLOUDFLARETOKEN}" } } } }
创建可复用代码块:
(tls) { tls { dns cloudflare {env.CLOUDFLARETOKEN} } }
调用代码块:
domain.tld { import tls # 导入TLS配置块 reverse_proxy 127.0.0.1:81 # 示例反向代理配置 }
拉取Cloudflare端点IP,用于全局配置中的trusted_proxies。
json{ "apps": { "http": { "servers": { "srv0": { "listen": [ ":443" ], "trusted_proxies": { "interval": 43200000000000, # 12小时(单位:纳秒) "source": "cloudflare", "timeout": 15000000000 # 15秒(单位:纳秒) } } } } } }
# 全局配置 { servers { trusted_proxies cloudflare { interval 12h # IP更新间隔 timeout 15s # 超时时间 } } } mysite.com { respond * "Hello there" # 示例响应 }
http_ntlm协议与http类似,但始终使用HTTP 1.1且禁用Keep-Alive,适用于需要NTLM认证的后端服务。
json{ "match": [ { "host": ["wac.domain.tld"] # 替换为您的域名 } ], "handle": [ { "handler": "subroute", "routes": [ { "handle": [ { "encodings": { "gzip": {} # Gzip压缩 }, "handler": "encode" }, { "handler": "reverse_proxy", "transport": { "protocol": "http_ntlm", # 使用NTLM传输协议 "tls": { "insecure_skip_verify": true # 跳过TLS验证(仅测试用) } }, "upstreams": { { "dial": "192.168.1.5:443" # 后端服务地址 } } } ] } ] } ] }
wac.domain.tld { import tls # 导入之前定义的TLS配置块 encode gzip # 启用Gzip压缩 reverse_proxy { transport http_ntlm { # 使用NTLM传输协议 tls_insecure_skip_verify # 跳过TLS验证(仅测试用) } to 192.168.1.5:443 # 后端服务地址 } }


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务