frankenphp 1.2 本身不处理 https,自动证书由内置 caddy 2.8+ 驱动:配置合法域名、开放 80/443 端口、dns 解析正确时,caddy 首次启动即静默申请 let’s encrypt 证书、启用 tls 1.3 并 90 天自动续期;需在 caddyfile 中用域名(如 example.com)而非 :80 或 localhost 声明 server 块,保持 automatic_https 默认开启,http→https 跳转须单独在 :80 块中配置 redir,wordpress 等应用无需插件,只需确保站点 url 和 wp-config.php 中 https 常量正确设置。

FrankenPHP 1.2 本身不直接处理 HTTPS,它的自动证书功能完全由内置的 Caddy 2.8+ 驱动。只要配置得当,Caddy 会在首次启动时静默向 Let’s Encrypt 申请证书、启用 TLS 1.3,并每 90 天自动续期——整个过程无需手动操作,也不依赖 WordPress 插件或 certbot。
域名必须合法且可公网访问
Caddy 的自动 HTTPS 只对带完整域名的 server 块生效,且要求:
- DNS 已将域名(如
example.com和www.example.com)正确解析到服务器公网 IP - 服务器 80 端口对外可达(HTTP-01 挑战必需),443 端口也建议开放(用于后续 HTTPS 流量)
- 防火墙、云厂商安全组、CDN(如 Cloudflare)不能拦截 80 端口的入站请求
✅ 正确写法(Caddyfile 中):
example.com www.example.com {
php_server
}
❌ 错误写法(不会触发证书申请):
:80 { ... }
localhost { ... }
:443 { ... }
保持 automatic_https 默认开启,不要干扰
Caddy 2.8+ 默认启用 automatic_https,这是自动证书流程的总开关。你不需要、也不应该:
- 在 Caddyfile 中写
tls指令(如tls /path/cert.pem /path/key.pem) - 添加
automatic_https off或https://重定向逻辑 - 手动配置
redir或reverse_proxy覆盖默认行为
只要没显式禁用,Caddy 就会在监听合法域名时自动走 ACME 流程。成功后日志中会出现:
acme: Obtained certificate Using config from /etc/ssl/openssl.cnf
HTTP → HTTPS 跳转需单独配置在 :80 块里
自动 HTTPS 只管证书和加密,不负责跳转。若希望用户访问 http://example.com 时自动跳到 HTTPS,必须显式加一个独立的 :80 监听块:
:80 {
redir https://{host}{uri} permanent
}
否则 HTTP 端口仍可直连,只是不加密。
WordPress 或其他 PHP 应用只需配好 URL
FrankenPHP 接管了 TLS 层,PHP 侧无需装任何 HTTPS 插件。但你要确保:
- WordPress 后台「设置 → 常规」中,“WordPress 地址(URL)”和“站点地址(URL)”都填
https://example.com -
wp-config.php中加入:define('WP_HOME', 'https://example.com'); define('WP_SITEURL', 'https://example.com'); $_SERVER['HTTPS'] = 'on'; - 若用反向代理(如 Nginx 前置),还需确认
X-Forwarded-Proto被正确传递并被 PHP 识别
不复杂但容易忽略
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











