frankenphp 的 https 由 caddy 自动管理,需配置合法域名、开放 80/443 端口、保持 caddyfile 默认设置,并在 wordpress 中强制使用 https 地址以确保安全连接正确生效。

FrankenPHP 本身不提供 HTTPS 开关,它的自动证书功能完全由底层 Caddy 驱动。只要配置得当,Caddy 会在首次启动时静默申请 Let’s Encrypt 证书、启用 TLS 1.3,并每 90 天自动续期——整个过程无需手动干预。
域名与端口必须合法且可达
自动 HTTPS 只对带真实域名的 server 块生效,且依赖 HTTP-01 挑战,因此:
- 监听写法必须是 example.com { ... } 或 www.example.com example.com { ... },不能是
:80或localhost - 你的域名必须能被公网 DNS 正确解析到服务器 IP
- 服务器 80 端口必须开放(防火墙、云厂商安全组、CDN 都不能拦截)
- 443 端口建议也放开,便于后续 HTTPS 流量直通
Caddyfile 中不要干扰自动流程
Caddy 2.8+ 默认开启 automatic_https,这是核心开关。你不需要写它,更不能关闭或覆盖:
- ✅ 保持默认:Caddyfile 中不出现
tls、automatic_https off、https://重定向等指令 - ❌ 避免手动配证书:
tls /path/to/cert.pem /path/to/key.pem会跳过 ACME,导致无法续期 - ❌ 不要在域名块里混用 HTTP 和 HTTPS 处理逻辑,比如同时写
redir和php_server
确保 WordPress 或其他 PHP 应用配合正确
FrankenPHP 终止 HTTPS 后,PHP 应用需知道自己运行在加密连接上,否则后台跳转、资源链接、Cookie 安全标志都会出错:
- 进 WordPress 后台 → 设置 → 常规,把“WordPress 地址”和“站点地址”都改为 https://example.com
- 若后台打不开,直接编辑
wp-config.php,在/* That's all, stop editing! */前添加:define('WP_HOME', 'https://example.com');define('WP_SITEURL', 'https://example.com'); - 无需安装 “Really Simple SSL” 等插件,它们的功能已被 Caddy 原生覆盖
验证是否成功
启动后检查两处关键信息:
- 查看日志:
caddy log或journalctl -u caddy -f,看到 acme: Obtained certificate 表示证书已签发 - 浏览器访问
https://example.com,地址栏显示锁图标,点击可查看证书有效期是否为 90 天 - 用
curl -Iv https://example.com查看响应头中是否有ALPN, offering h2和SSL certificate verify ok
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











