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

如何在Laravel Forge中为除单个路由外的所有路由启用HTTP基础认证

解决Laravel Forge中排除特定路由的HTTP基础认证问题

兄弟,我看你在Laravel Forge配置HTTP基础认证时卡壳了——想让/example路由跳过认证,但改了配置后完全没效果,这大概率是踩了几个Nginx配置的小坑,我来帮你一步步搞定:

首先纠正最关键的指令错误

你之前写的basic_auth off;是错的!Nginx里控制HTTP基础认证的正确指令是auth_basic,所以正确写法是auth_basic off;,这是最容易忽略的细节。

找对配置文件的位置

你提到修改了.htpasswd-{ruleId}文件,这个文件其实是存储用户名和加密密码的,不是Nginx的配置文件,改它当然没用!Laravel Forge允许我们在站点的自定义Nginx配置目录添加规则,正确路径是:

/etc/nginx/forge-conf/[你的站点域名]/server/

比如你的站点是example.com,路径就是/etc/nginx/forge-conf/example.com/server/。

编写正确的排除规则

在这个目录下新建一个配置文件(比如skip-basic-auth.conf,文件名随便取,只要后缀是.conf就行),写入以下内容:

# 精确匹配/example路由,跳过基础认证
location = /example {
    auth_basic off;
    
    # 必须加上Laravel路由必需的PHP转发配置,否则会返回404
    try_files $uri $uri/ /index.php?$query_string;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # 换成你服务器上的PHP版本,比如php8.1
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
}

这里要注意:必须复制主配置里处理PHP的fastcgi配置,因为Laravel的所有路由最终都要通过index.php解析,只写auth_basic off;的话,Nginx不知道怎么处理这个请求,会直接返回404。

验证并重启Nginx

写完配置后,先测试Nginx配置是否合法:

sudo nginx -t

如果输出test is successful,就可以重启Nginx让配置生效:

sudo systemctl reload nginx

(或者直接用Forge面板里的「重启Nginx」按钮也行)

为什么之前的配置没用?

总结下你踩的坑:

  1. 用了错误的Nginx指令:basic_auth不是官方指令,正确的是auth_basic
  2. 修改了错误的文件:.htpasswd是密码存储文件,不是配置文件
  3. 缺少Laravel路由必需的PHP转发配置,导致Nginx无法正确解析/example路由

按照上面的步骤操作后,/example路由应该就能顺利跳过基础认证了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 23:07:46