satisfy
'satisfy' 指令控制基于多种访问控制方法授予资源访问权限的方式。 — NGINX HTTP Core
satisfy
httpserverlocation
语法satisfy all | any | none;
默认值none
上下文http, server, location
模块NGINX HTTP Core
参数1
说明
'satisfy' 指令允许您组合不同的访问控制机制来决定是否授予或拒绝请求。它接受一个单一参数,可为 'all'、'any' 或 'none',用于决定如何评估访问规则。若设置为 'all',则必须满足所有访问规则才能授予访问。若设置为 'any',只需要满足其中一条访问规则,从而允许更宽松的访问策略。相反,'none' 选项会有效地禁用任何预定义的访问控制,在没有其他规则适用时允许不受限制的访问。 该指令在需要满足多个条件的复杂授权场景中特别有用,例如将基于 IP 的限制(通过 'allow' 和 'deny' 指令)与诸如认证等其他方法结合使用。应注意定义清晰且结构良好的规则,因为错误配置的指令可能导致意外的访问问题。需要注意的是,如果未定义任何适用的规则,则适用于资源的默认访问权限将生效,而该默认行为可能会根据服务器配置而不同。
配置示例
location /secure {
allow 192.168.1.0/24;
deny all;
satisfy any;
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}⚠
确保由 'all' 和 'any' 定义的逻辑 AND/OR 条件彼此不冲突,以保持清晰性和安全性。
⚠
在未进一步指定其他指令的情况下使用 'satisfy none' 可能导致敏感位置被非预期地公开访问。