Laravel Herd启用HTTPS后用ngrok共享出现301无限重定向问题求助
解决Laravel Herd搭配ngrok实现HTTPS正常共享的方案
针对你遇到的混合内容错误和无限301重定向问题,这里有几个可行的解决思路:
方法一:配置Laravel信任ngrok代理并修正APP_URL
- 停止当前共享进程,打开项目根目录的
.env文件,将APP_URL修改为ngrok生成的HTTPS地址(例如https://abc123.ngrok.io)。 - 配置Laravel的
TrustProxies中间件,让框架信任ngrok的反向代理:- 打开
bootstrap/app.php,确保中间件数组包含\Illuminate\Http\Middleware\TrustProxies::class:$app->middleware([ \Illuminate\Http\Middleware\TrustProxies::class, ]); - 打开
config/trustedproxy.php,将proxies值设为'*'(仅用于本地共享场景,生产环境请勿这么配置):'proxies' => '*',
- 打开
- 重新执行
herd secure确保项目启用HTTPS,再运行herd share启动共享。
方法二:直接用ngrok命令映射Herd的HTTPS端口
- 在Herd界面查看目标项目的HTTPS端口(默认通常为6443,每个项目可能不同)。
- 直接运行ngrok命令进行端口映射,同时重写Host Header避免重定向:
ngrok http https://localhost:你的HTTPS端口 --host-header=rewrite - 为了不用每次修改
.env,可以在routes/web.php中添加动态适配代码,自动识别ngrok的HTTPS地址:if (request()->hasHeader('X-Forwarded-Proto')) { config(['app.url' => 'https://' . request()->getHost()]); }
方法三:修复混合内容错误(适配herd unsecure场景)
如果需要使用herd unsecure,可以强制Laravel生成HTTPS资源链接:
- 打开
app/Providers/AppServiceProvider.php,在boot方法中添加:\Illuminate\Support\Facades\URL::forceScheme('https'); - 确保ngrok共享的是HTTPS地址(直接用ngrok命令生成HTTPS转发),这样页面和资源都使用HTTPS,不会触发混合内容错误。
注意事项
- 确保你的ngrok是最新版本,旧版本可能存在兼容性问题
- 每次ngrok生成新地址后,若使用方法一,记得更新
.env中的APP_URL - 配置
TrustProxies是解决无限301重定向的核心,因为Laravel默认不信任外部代理的HTTPS请求,会强制重定向到本地HTTPS地址
内容的提问来源于stack exchange,提问作者kyurusai
相关产品推荐
相关产品推荐

