Nginx:根据领域选择性地开启/关闭 Auth Basic

Nginx:根据领域选择性地开启/关闭 Auth Basic

我在 LEMP 堆栈上运行 SugarCRM,并使用 auth_basic 将其关闭。运行正常,标题显示:

WWW-Authenticate:
Basic realm="Username and Password are required"

SugarCRM 中的某些文件通过 PHP 内置有自己的 http 身份验证,例如 ical_server.php 在其标题中显示:

WWW-Authenticate:
Basic realm="SugarCRM iCal"
X-Dav-Powered-By:
PHP class: HTTP_WebDAV_Server_iCal

我正在尝试绕过此文件的 auth_basic,或者至少是我自己的范围,即上面显示的第一个范围。

location = /ical_server.php {
       auth_basic "off";
}

但是,这会关闭两个领域。换句话说,它会不加区别地完全关闭 auth_basic。

有没有办法选择性地关闭所选的 http 基本身份验证领域?Nginx 文档似乎表明没有,如果这是真的,那么是否有另一种可能迂回的方法来实现这一点?

例如首先要用正则表达式来切换我的领域?

伪代码:

location != /ical_server.php {
auth_basic "Username and Password are required";
auth_basic_user_file /var/web/webaddress.tld/private/.htpasswd;

}

尽管我不认为负匹配是可能的。

有任何想法吗?

答案1

您可以定义两个位置:

location /ical_server.php {

}
location / {
        auth_basic "Username and Password are required";
        auth_basic_user_file /var/web/webaddress.tld/private/.htpasswd;
}

相关内容