可为不同子目录配置独立账号密码认证:1. 用htpasswd为各目录创建专属.htpasswd文件;2. 在对应location块中用^~前缀分别引用各自auth_basic_user_file;3. 严格设置文件权限为640且不放于web根目录;4. 语法验证后重载并逐个测试访问。

可以为不同子目录配置各自独立的账号密码认证,关键在于:每个 location 块使用不同的 auth_basic_user_file 文件,并确保文件路径、权限和内容互不干扰。
1. 为每个子目录准备专属密码文件
用 htpasswd 分别创建多个独立的 .htpasswd 文件,避免混用同一文件:
- 为
/admin/创建:sudo htpasswd -c /etc/nginx/.htpasswd_admin admin_user - 为
/backup/创建:sudo htpasswd -c /etc/nginx/.htpasswd_backup backup_user - 为
/dev-api/创建:sudo htpasswd -c /etc/nginx/.htpasswd_dev dev_user
注意:-c 只在首次创建文件时使用;后续追加用户去掉 -c,例如:sudo htpasswd /etc/nginx/.htpasswd_admin second_admin。
2. 在 location 块中分别引用对应文件
每个受保护子目录需单独定义 location,并指定各自的认证配置:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
location ^~ /admin/ { auth_basic "Admin Area"; auth_basic_user_file /etc/nginx/.htpasswd_admin; }location ^~ /backup/ { auth_basic "Backup Access"; auth_basic_user_file /etc/nginx/.htpasswd_backup; }location ^~ /dev-api/ { auth_basic "Dev API Zone"; auth_basic_user_file /etc/nginx/.htpasswd_dev; }
务必用 ^~ 前缀匹配,防止正则 location 干扰或覆盖;不要把多个 auth_basic_user_file 写进同一个 location,否则会冲突。
3. 权限与安全要点
每个密码文件都必须严格管控权限,且不能放在网站可访问路径下:
- 设属主属组(如 Nginx 运行用户是
www-data):sudo chown root:www-data /etc/nginx/.htpasswd_* - 设最小必要权限:
sudo chmod 640 /etc/nginx/.htpasswd_* - 禁止将任何 .htpasswd 放在
/var/www/html或其他 Web 根目录内,否则可能被直接下载
4. 验证与生效
配置完成后必须验证语法并重载,再逐个测试:
- 检查语法:
sudo nginx -t(输出test is successful才继续) - 重载配置:
sudo nginx -s reload - 分别访问
https://yoursite.com/admin/、https://yoursite.com/backup/等路径,确认各自弹出对应提示文字,且仅该目录下账号可用
浏览器会按 auth_basic 的 realm 字符串区分认证域,所以不同子目录即使用户名相同,输错一个也不会影响另一个的登录状态。










