配置 auth_basic_user_file 的关键是用 htpasswd 生成标准加密凭据文件,设为 640 权限、root:www-data(或 root:nginx)归属,放于非 Web 目录并用绝对路径引用。

配置 auth_basic_user_file 的关键是生成标准格式的加密凭据文件,并确保 Nginx 能安全、正确地读取它。这个文件不能手写明文,也不能放错位置或设错权限。
生成 .htpasswd 文件
必须用 htpasswd 工具生成(Nginx 自带模块只认这种格式):
- Ubuntu/Debian:先运行
sudo apt install apache2-utils - CentOS/RHEL:运行
sudo yum install httpd-tools或sudo dnf install httpd-tools - 首次创建并添加用户(如
admin):sudo htpasswd -c /etc/nginx/.htpasswd admin,按提示输入密码 - 后续加新用户(不加
-c,否则会清空原文件):sudo htpasswd /etc/nginx/.htpasswd user2
设置文件权限与归属
文件必须防泄露、防越权读取:
- 权限设为
640:只有所有者可读写,组用户仅可读,其他人无权限 - 归属设为
root:www-data(Debian/Ubuntu)或root:nginx(RHEL/CentOS),确保 Nginx worker 进程能读取 - 执行命令:
sudo chmod 640 /etc/nginx/.htpasswd && sudo chown root:www-data /etc/nginx/.htpasswd - 绝对不要把该文件放在 Web 根目录(如
/var/www/html)下,否则可能被直接下载
在 Nginx 配置中引用
auth_basic_user_file 必须写绝对路径,且路径要和实际文件位置完全一致:
- 推荐写在
location块内,例如保护后台:location ^~ /admin/ { ... } - 配置行示例:
auth_basic_user_file /etc/nginx/.htpasswd; - 如果路径写成相对路径(如
conf/.htpasswd)或拼写错误,认证会静默失效 - 检查 Nginx 是否有读取权限:可用
sudo -u www-data cat /etc/nginx/.htpasswd测试
验证文件内容是否合法
打开文件应看到类似这样的行(每行一个用户,冒号分隔,密码是加密字符串):
admin:$apr1$abc123$XYZ...
- 每行只能有一个用户,不能有空行或注释行(# 开头的行会被忽略,但不推荐混用)
- 密码部分必须是
crypt、apr1(MD5 变种)或bcrypt格式,普通 Base64 或明文会失败 - 可用
htpasswd -v /etc/nginx/.htpasswd admin验证用户是否存在且密码可校验


















