Nginx:使用http auth将子目录设置为文件列表

时间:2015-12-16 22:10:51

标签: nginx

我正在尝试在VPS上设置Nginx,我在配置方面遇到了一些麻烦。

我希望/files子目录使用http身份验证。经过身份验证后,我希望服务器显示一个简单的文件列表。现在,身份验证正确,但系统拒绝显示常设列表页面,而是在/files上返回404。但是,当我从配置文件中删除身份验证代码时,它会显示该列表。

autoindex on位置块中设置/files也不起作用。

我的配置文件中的服务器块如下所示。我做错了什么?

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        root   /srv/http; 
        index  index.html index.htm;
        autoindex on;
#       auth_basic "Restricted";
#       auth_basic_user_file /srv/http/files/.htpasswd;
    }

   location /files {
           auth_basic "Restricted";
           auth_basic_user_file /srv/http/files/.htpasswd;
   }
 }

1 个答案:

答案 0 :(得分:0)

nginx chooses one location block来处理请求。它使用位置块中的指令或从外部容器继承。

您的/files位置缺少rootautoindex指令。这些可以在容器中复制,但通常在兄弟location容器之间继承常用功能。例如:

root   /srv/http; 
index  index.html index.htm;
autoindex on;

location / {
}

location /files {
    auth_basic "Restricted";
    auth_basic_user_file /srv/http/files/.htpasswd;
}

或者(根据您的要求):

root   /srv/http; 

location / {
    index  index.html index.htm;
}

location /files {
    autoindex on;
    auth_basic "Restricted";
    auth_basic_user_file /srv/http/files/.htpasswd;
}