Nginx开启目录浏览功能时加密码的方法
环境:CentOS7
1.安装工具
sudo yum install httpd-tools
2. 创建密码文件和用户 使用 htpasswd 命令来创建密码文件并添加用户。
以下命令会创建一个名为 .htpasswd 的文件,并添加一个名为 your_username 的用户。
sudo htpasswd -c /etc/nginx/.htpasswd your_username
执行上述命令后,系统会提示你输入并确认该用户的密码。
如果你需要添加更多用户,可以使用以下命令(去掉 -c 选项,因为 -c 选项用于创建新文件,再次使用会覆盖原文件):
sudo htpasswd /etc/nginx/.htpasswd another_username
3. 配置 Nginx 开启目录浏览和密码认证 编辑 Nginx 的配置文件,通常位于 /etc/nginx/sites-available/ 目录下,找到你需要开启目录浏览和添加密码认证的虚拟主机配置文件,或者直接编辑 nginx.conf 文件。 在需要开启目录浏览和添加密码认证的 location 块中添加以下配置:
server {
listen 80;
server_name your_domain.com;
location /your_directory {
# 开启目录浏览功能
autoindex on;
# 设置目录列表格式为 HTML
autoindex_format html;
# 设置字符编码
charset utf-8;
# 开启基本认证
auth_basic "Restricted Access";
# 指定密码文件路径
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
上述配置中:
autoindex on;:开启目录浏览功能。
autoindex_format html;:设置目录列表以 HTML 格式显示。
charset utf-8;:设置字符编码为 UTF - 8,避免中文等字符显示乱码。
auth_basic "Restricted Access";:设置认证提示信息,当用户访问受保护的目录时,会弹出提示框显示该信息。
auth_basic_user_file /etc/nginx/.htpasswd;:指定密码文件的路径。
4. 检查并重启 Nginx 在修改配置文件后,需要检查配置文件的语法是否正确:
sudo nginx -t
如果输出显示 syntax is ok 和 test is successful,则表示配置文件语法正确。
重启 Nginx 使配置生效:
sudo systemctl restart nginx
5. 测试访问 现在,当你尝试访问 http://your_domain.com/your_directory 时,会弹出一个认证提示框,要求你输入用户名和密码。
输入之前创建的用户名和密码,验证通过后即可浏览目录内容。