NGINX - 将对文件夹的访问限制为来自 ldap 身份验证的用户列表

NGINX - Limit access to folder to a list of user from ldap authentication

A 在 ldap 身份验证后有一个 nginx 反向代理。 我可以从变量 $_SERVER['PHP_AUTH_USER'] 中读取 php 中的用户名。我认为这意味着用户名从 ldap 传递到 nginx,而不是 php.
在 nginx 配置中是否可以只允许用户列表访问文件夹?

更新
在 nginx 中,用户存储在 $remote_user 变量中。是否可以将 $remote_user 与存储在文件中的用户列表进行比较?然后拒绝或允许访问文件夹?

更新
可能我必须使用 map 指令,例如:

map $remote_user $allowed_user {
    default 0;
    user1   1;
    user2   1;
}

然后在合适的位置进行测试:

location /folder/ {
    if($allowed_user != 1){
        return 403;
    }
    proxy_pass http://site;
}

但是当我执行 sudo nginx -t 时,我收到以下错误:

nginx: [emerg] unknown directive "if($allowed_user" in /etc/nginx/nginx.conf:104
nginx: configuration file /etc/nginx/nginx.conf test failed

您可以通过 map 指令来完成(请注意 map 翻译定义块应该放在 http 上下文中 server块):

map $remote_user $deny
    username1  0;
    username2  0;
    ...
    usernameN  0;
    default    1;
}

server {
    ...
    location /folder/ {
        if ($deny) { return 403; }
        ...
    }
}

您可以预先生成上述形式的用户列表 (username1 0; username 2 0; ...),然后将此列表包含到 nginx 配置中:

map $remote_user $deny {
    include /path/userlist.txt;
    default 1;
}

每当此用户列表文件发生更改时,您都需要重新加载 nginx 配置 (nginx -s reload)。