在 Nginx 中列出目录和文件,并使用密码保护访问权限,可以通过配置 HTTP Basic Auth 实现,以下是一个详细的步骤指南:
安装 Nginx
如果你还没有安装 Nginx,可以使用包管理器进行安装,在 Ubuntu/Debian 系统上,可以使用以下命令:
sudo apt update sudo apt install nginx
创建密码文件
你需要创建一个包含用户名和密码的文件,使用htpasswd
工具来生成这个文件,你可以用apt
安装apache2-utils
包来获得htpasswd
工具:
sudo apt install apache2-utils
然后运行以下命令来创建密码文件(例如/etc/nginx/.htpasswd
):
sudo htpasswd -c /etc/nginx/.htpasswd your_username
系统会提示你输入密码并确认一次,如果你想添加更多用户,可以运行:
sudo htpasswd /etc/nginx/.htpasswd another_username
配置 Nginx
编辑 Nginx 配置文件以启用密码保护和列出目录内容,假设你要保护的目录是/var/www/html/protected
,打开或创建相应的服务器块配置:
server { listen 80; server_name your_domain_or_ip; location /protected { auth_basic "Restricted Area"; auth_basic_user_file /etc/nginx/.htpasswd; autoindex on; root /var/www/html; } }
在这个配置中:
auth_basic "Restricted Area";
设置一个基本的认证提示信息。
auth_basic_user_file /etc/nginx/.htpasswd;
指定存储用户名和密码的文件路径。
autoindex on;
开启目录列表功能。
root /var/www/html;
指定根目录。
测试配置
在保存配置文件后,运行以下命令测试配置文件的正确性:
sudo nginx -t
如果配置正确,你会看到类似如下的信息:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
重新加载 Nginx
如果配置文件没有问题,重新加载 Nginx 使更改生效:
sudo systemctl reload nginx
或者在某些系统上使用:
sudo service nginx reload
访问受保护的目录
当你访问http://your_domain_or_ip/protected
时,浏览器会提示你输入用户名和密码,只有输入正确的凭据后,才能查看目录中的文件列表。
通过以上步骤,你就成功实现了使用密码保护访问 Nginx 上的目录和文件列表的功能。