frankenphp绑定自定义域名需两步:先修改hosts文件添加127.0.0.1 myapp.test映射,再通过server_name环境变量或caddyfile配置域名监听,启用https自动证书。

FrankenPHP 绑定自定义域名实现本地项目访问,核心是利用其内置的 Caddy 服务器能力——无需额外配置 Nginx 或 Apache,只需两步:修改系统 hosts 文件做本地解析 + 配置 FrankenPHP 的 SERVER_NAME 环境变量或 Caddyfile。整个过程轻量、统一、无外部依赖。
一、修改本地 hosts 文件映射域名
这一步让操作系统把你的自定义域名指向本机(127.0.0.1),是所有本地域名访问的前提。-
Windows:用管理员权限打开记事本,编辑
C:\Windows\System32\drivers\etc\hosts,末尾添加:127.0.0.1 myapp.test
127.0.0.1 api.myapp.test -
macOS / Linux:终端执行
sudo nano /etc/hosts
添加相同行后保存(Ctrl+O → Enter → Ctrl+X)
✅ 验证是否生效:终端运行 ping myapp.test,看到 127.0.0.1 且 64 bytes from 127.0.0.1 即成功。
二、配置 FrankenPHP 域名监听
FrankenPHP 默认启动时使用 `:80`(即监听所有域名),但要让它「只响应特定域名」并启用 HTTPS 自动证书(本地开发推荐 `.test` 域),需显式指定 `SERVER_NAME`。方式 1:通过环境变量启动(最常用)
```bash SERVER_NAME=myapp.test frankenphp server ``` 或搭配 PHP 项目路径: ```bash SERVER_NAME=myapp.test frankenphp server --document-root=./public ```✅ 效果:FrankenPHP 启动后仅响应 http://myapp.test 请求,并自动为 https://myapp.test 申请并托管 Let's Encrypt 证书(需联网,首次访问会触发)。
方式 2:使用自定义 Caddyfile(更灵活)
在项目根目录创建 `Caddyfile`: ```caddy myapp.test { root * ./public php_fastcgi localhost:2016 # FrankenPHP 内置 PHP 处理器端口 file_server } ``` 然后启动: ```bash frankenphp server --caddyfile=Caddyfile ```⚠️ 注意:.test 是 IETF 官方保留的专用测试顶级域,不走公网 DNS,完全安全,推荐用于本地开发;避免用 .local(可能与 mDNS 冲突)或 .dev(已被 Google 注册并强制 HTTPS)。
三、验证与调试要点
- 浏览器访问 `http://myapp.test` —— 应正常加载项目首页 - 访问 `https://myapp.test` —— 首次会跳转并自动签发证书(地址栏显示安全锁) - 若提示“连接被拒绝”:确认 FrankenPHP 进程正在运行,且未被其他服务(如 XAMPP 的 Apache)占用 80/443 端口 - 若 HTTPS 报证书无效:浏览器可临时点击“高级 → 继续访问”,或导入 Caddy 根证书(路径通常为 `~/.local/share/caddy/pki/authorities/local/root.crt`)FrankenPHP 的域名绑定本质是 Caddy 的 Host 匹配 + 内置 PHP 执行器直连,没有 FastCGI 转发层,因此配置简洁、启动快、调试直观。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











