文章

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模块 这三个模块必须全部放行,否则会返回4xx5xx
any: 只要其中有一个访问放行就可以正常访问 
可以出现在: httpserverlocation
决定模块的执行顺序
    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 进行授权