satisfy指令
satisfy 指令:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
satisfy all | any;
默认: all: access模块、auth_basic模块、auth_request模块 这三个模块必须全部放行,否则会返回4xx或5xx
any: 只要其中有一个访问放行就可以正常访问
可以出现在: http、server、location
决定模块的执行顺序
access模块
auth_basic模块
auth_request模块
其他模块
常见问题:
1. 如果出现 return 指令, access 不管放到 return 前还是后, 都不会执行
2. 多个 access 模块 的顺序是有影响的:
查看 ngx_modules.c
3. 查看以下配置:
location / {
satisfy any;
auth_basic "test auth_basic";
auth_basic_user_file examples/auth.pass;
deny all;
}
输入正确的密码,可以访问到文件:
1. satisfy any 设置为any 涉及到的模块间已经定了, 命令放置位置可随意
2. deny all; 虽然设置了禁用all, 但是 satisfy any 设置为any, 只要请求正确就可以访问到文件
4. 例如3中, deny all 提到 auth_basic之前, 输入正确的密码,也是可以访问到文件的
5. 当3中改为 allow all 时, 是进入不到密码输入界面的, 直接旧放过去了
本文由作者按照
CC BY 4.0
进行授权