valet 是 laravel 官方为 macos 量身打造的轻量开发服务器,自动处理 dns 解析、https 和 nginx 配置,无需虚拟机;安装后默认使用 .test 域名,通过 valet link myapp 绑定项目,支持快速多项目管理与 https。

Mac 上配 Laravel 8 虚拟主机,核心不是“能不能”,而是“走哪条路”——valet、Homestead 或手动配 nginx/apache。选错路径,轻则域名不解析,重则 HTTPS 强跳、404、HSTS 锁死。下面按实际使用频率和稳定性排序说明。
用 valet link 是最省心的方案
Valet 是 Laravel 官方为 macOS 量身打造的轻量开发服务器,它自动处理 DNS 解析、HTTPS、Nginx 配置,且不依赖虚拟机。Laravel 8 完全兼容。
-
valet install后默认使用.test域名;改域名必须用valet domain local(不能只改 hosts) - 已
valet link myapp的项目,改了 domain 后不会自动更新——必须重新执行valet link myapp - Chrome 访问过
myapp.test后会记 HSTS 策略,即使你删了 Valet、换域名,浏览器仍强制跳 HTTPS 并报 ERR_CONNECTION_REFUSED;要进chrome://net-internals/#hsts手动删掉该域名 - Mac 系统 DNS 缓存得清:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder,否则ping myapp.test还是不通
自己搭 nginx 配 server_name 容易 404
如果你绕过 Valet,直接在 Mac 上装 nginx(比如用 Homebrew),server_name 必须和浏览器地址栏输入的 Host 头完全一致,否则 Nginx 根本不进这个 server 块。
- 配置里写
server_name myapp.local;,但你在浏览器输http://localhost:8000—— 就是 404,Nginx 压根没匹配上 - 别用
.dev或.app:Chrome 自 2019 年起强制 HSTS,哪怕 nginx 返回 HTTP,浏览器也会自动转 HTTPS 并失败 - Laravel 8 的 public 目录路径必须精确到
root /path/to/myapp/public;,少一个/public就是 403 或空白页 - 记得开
location / { try_files $uri $uri/ /index.php?$query_string; },否则路由不生效
Homestead 启动后域名不生效?先查三处同步
Homestead 是完整虚拟机方案,适合需要 MySQL/Redis 等全套服务的场景,但配置链更长,出问题时排查点更多。
-
Homestead.yaml里的map: myapp.test和to: /home/vagrant/code/myapp必须与本地 hosts 文件严格一致:192.168.10.10 myapp.test - 改完
Homestead.yaml后,必须运行vagrant reload --provision;只vagrant reload不会重生成 Nginx 配置 - Windows 用户用记事本改 hosts 时,必须“以管理员身份运行”,否则保存无效;Mac/Linux 用户注意权限,
sudo vi /etc/hosts是基本操作 - 如果用了
type: apache,默认不支持.test泛解析,得手动加ServerAlias *.test到 Apache vhost 配置里
真正卡住人的往往不是某一步不会做,而是改了 A 却忘了同步 B(比如改了 valet domain 没重 link,或改了 Homestead.yaml 没 --provision),或者被浏览器缓存/HSTS/系统 DNS 这类“看不见的层”拦住。动手前,先确认你到底要什么:快速试一个 demo?用 Valet;要复现生产环境?Homestead;已有 nginx 经验且想完全掌控?自己配,但务必把 server_name 和 Host 头对齐这件事刻进本能。











