You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Herd启用HTTPS后用ngrok共享出现301无限重定向问题求助

解决Laravel Herd搭配ngrok实现HTTPS正常共享的方案

针对你遇到的混合内容错误和无限301重定向问题,这里有几个可行的解决思路:

方法一:配置Laravel信任ngrok代理并修正APP_URL

  1. 停止当前共享进程,打开项目根目录的.env文件,将APP_URL修改为ngrok生成的HTTPS地址(例如https://abc123.ngrok.io)。
  2. 配置Laravel的TrustProxies中间件,让框架信任ngrok的反向代理:
    • 打开bootstrap/app.php,确保中间件数组包含\Illuminate\Http\Middleware\TrustProxies::class:
      $app->middleware([
          \Illuminate\Http\Middleware\TrustProxies::class,
      ]);
      
    • 打开config/trustedproxy.php,将proxies值设为'*'(仅用于本地共享场景,生产环境请勿这么配置):
      'proxies' => '*',
      
  3. 重新执行herd secure确保项目启用HTTPS,再运行herd share启动共享。

方法二:直接用ngrok命令映射Herd的HTTPS端口

  1. 在Herd界面查看目标项目的HTTPS端口(默认通常为6443,每个项目可能不同)。
  2. 直接运行ngrok命令进行端口映射,同时重写Host Header避免重定向:
    ngrok http https://localhost:你的HTTPS端口 --host-header=rewrite
    
  3. 为了不用每次修改.env,可以在routes/web.php中添加动态适配代码,自动识别ngrok的HTTPS地址:
    if (request()->hasHeader('X-Forwarded-Proto')) {
        config(['app.url' => 'https://' . request()->getHost()]);
    }
    

方法三:修复混合内容错误(适配herd unsecure场景)

如果需要使用herd unsecure,可以强制Laravel生成HTTPS资源链接:

  1. 打开app/Providers/AppServiceProvider.php,在boot方法中添加:
    \Illuminate\Support\Facades\URL::forceScheme('https');
    
  2. 确保ngrok共享的是HTTPS地址(直接用ngrok命令生成HTTPS转发),这样页面和资源都使用HTTPS,不会触发混合内容错误。

注意事项

  • 确保你的ngrok是最新版本,旧版本可能存在兼容性问题
  • 每次ngrok生成新地址后,若使用方法一,记得更新.env中的APP_URL
  • 配置TrustProxies是解决无限301重定向的核心,因为Laravel默认不信任外部代理的HTTPS请求,会强制重定向到本地HTTPS地址

内容的提问来源于stack exchange,提问作者kyurusai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:57:31