nginx 中除列出的用户代理之外的所有基本身份验证

Aid*_*tis 2 nginx

我写了一个关于 Apache 配置的类似问题,但我也对 nginx 感兴趣。

除了 nginx 配置中指定的用户代理之外,是否可以要求所有用户进行基本身份验证?

Aid*_*tis 6

经过几个晚上的研究和反复试验,我发现可以将map指令与指令的自定义变量相结合来创建条件身份验证auth_basic

map $http_user_agent $authentication {
    default "Access Restricted";
    "~^PayPal IPN" "off";
    # ...
}

server {
    # ...
    location / {
        auth_basic $authentication;
        auth_basic_user_file /etc/nginx/.htpasswd;
        # ...
    }
}
Run Code Online (Sandbox Code Playgroud)