在 Laravel Forge Nginx 服务器上,我已为我的网站在根级别启用了基本身份验证安全性,一切运行正常。
然而,我现在正尝试从基本身份验证中排除 webhook 路径,以允许该网站能够与第三方正常运作。
无论我如何尝试,它似乎都不起作用,如果文件夹/文件存在于文件系统中,它可以正常工作,但对于在 Laravel 中设置为路由的漂亮 URL,它则不行。
这是我的 nginx 配置文件的摘录:
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/forge-conf/mywebsite/server/.htpasswd;
location = /hooks/stripe {
auth_basic "off";
allow all;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
如果我更改为物理文件(例如 CSS 或图标),上述操作可以正常工作/hooks/stripe
。此外,反转操作也可以正常工作,我可以用密码锁定该路由。
我尝试过使用位置块的变体,有些有=
,有些没有。此外,我还尝试过auth_basic off;
删除allow all;
。最后,我尝试使用不同的修饰符更改位置,使其不那么具体,并将其放在/
根位置之前和之后try_files
。
任何帮助都会非常感激,因为我现在完全陷入困境
答案1
谢谢@AlexD下面评论中的建议是可行的,但是您必须移动锻造导入,这可能会产生意想不到的影响。
如果您尝试访问不存在的 URL,/hooks/lost
您仍然会收到基本身份验证请求,我不确定为什么,但目前这解决了眼前的问题。
# FORGE CONFIG (DO NOT REMOVE!)
#include forge-conf/mywebsite/server/*;
location / {
try_files $uri $uri/ /index.php?$query_string;
include forge-conf/mywebsite/server/*;
}
location /hooks {
auth_basic off;
}