Nginx 在经过身份验证的页面后面提供静态内容

Nginx serve static content behind authenticated page

我创建了一个目录调用库,需要身份验证才能访问。完成身份验证后,我想为用户列出库中的所有文件。我试过 autoindex 无济于事,而且我发现的大多数 material 都没有涵盖身份验证是否会影响任何内容。

非常感谢任何帮助,谢谢。

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm index.php;

    # Make site accessible from http://localhost/
    server_name localhost;

    location / {
            # First attempt to serve request as file, then as
            # directory, then fall back to displaying a 404.
              try_files $uri $uri/ =404;
            # Uncomment to enable naxsi on this location include
            # /etc/nginx/naxsi.rules
    }

    location /website {

    }

    location /library {
        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }

您的 location /library 块将强加基本身份验证的要求,并在 /usr/share/nginx/html/library 中向所有可以成功身份验证的用户提供相同的静态文件。简而言之,所有成功授权的用户将在您当前的配置中看到相同的文件。

要向不同 用户提供不同 静态文件,请考虑基本身份验证将设置$remote_user 变量(请参阅docs),你可以利用它来使你的配置动态化。

例如,如果您想为每个用户 ID 提供不同的文件夹(同时 /library URL),您可以使用如下块:

location /library {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
    alias /usr/share/nginx/html/$remote_user/;
}

假设您的文件夹以您的用户 ID 命名并位于该路径中。

如果用户未通过基本身份验证,他们将看到 403 禁止访问错误,您可以使用 error_page 指令处理该错误以显示比基本错误更有用的内容。同样,如果用户可以成功验证并且相应的文件夹不存在,他们将看到 404,您可以再次使用 error_page 指令处理。