我正在尝试在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;
}
}
答案 0 :(得分:0)
nginx
chooses one location block来处理请求。它使用位置块中的指令或从外部容器继承。
您的/files
位置缺少root
和autoindex
指令。这些可以在容器中复制,但通常在兄弟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;
}