我有 2 个文件夹:/protected 和 /admin

在 htpasswd 中我有多个用户,其中一个名为“admin”

我该如何设置以便所有具有管理员权限的用户都可以访问 /protected 文件夹,但只有管理员可以访问 /admin 文件夹?

location /protected {
    auth_basic "Protected Area";
    auth_basic_user_file .htpasswd;

    root /static;
    autoindex_exact_size off;
    autoindex on;
}

location /admin {
    auth_basic "Restricted Area";
    auth_basic_user_file .htpasswd;

    set $is_admin 0;

    if ($remote_user = "admin") {
      set $is_admin 1;
    }

    if ($is_admin = 0) {
      return 403;
    }

    root /static;
    autoindex_exact_size off;
    autoindex on;
}

location / {
    root /static;
    autoindex_exact_size off;
    autoindex on;
}


最佳答案
1

您可以尝试以下方法:

server上下文中,添加以下内容:

map $remote_user $htpasswd_path {
    admin .htpasswd;
    default /dev/null;
}

然后在server上下文中:

auth_basic_user_file $htpasswd_path;

通过此配置,人们应该能够根据用户名选择不同的文件。

1

  • 有效,非常感谢!


    –