![NGINX 基本身份验证绕过 IP 地址或用户代理](https://linux22.com/image/782252/NGINX%20%E5%9F%BA%E6%9C%AC%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E7%BB%95%E8%BF%87%20IP%20%E5%9C%B0%E5%9D%80%E6%88%96%E7%94%A8%E6%88%B7%E4%BB%A3%E7%90%86.png)
如何在 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;
}
...
}