如何在 NGINX 中通过 IP 地址或用户代理设置基本身份验证旁路。如果我这样设置:
map $http_user_agent $auth {
default on;
"~curl" "off";
}
server {
.......
satisfy any;
allow 1.2.3.4;
allow 5.6.7.8;
deny all;
auth_basic $auth;
auth_basic_user_file /etc/nginx/.htpasswd;
.....
}
然后,当我使用用户代理 curl 从白名单以外的地址进入时,我得到 403。
答案1
禁用auth_basic
可能会将其删除satisfy
而不是使其成为现实。
您可以通过添加另一个授权方案来实现您的尝试,授权请求。
例如:
map $http_user_agent $auth {
"~curl" 1;
}
server {
...
satisfy any;
allow 1.2.3.4;
allow 5.6.7.8;
deny all;
auth_basic "Password protected";
auth_basic_user_file /etc/nginx/.htpasswd;
auth_request /auth;
location = /auth {
internal;
if ($auth) { return 200; }
return 401;
}
...
}