Nginx启用basic_auth需配置auth_basic和auth_basic_user_file两行指令,用htpasswd生成加密密码文件并设为绝对路径,必须配合HTTPS使用,且确保.htpasswd文件权限安全、不可被Web直接访问。

在 Nginx 配置文件中启用 basic_auth,核心是两行指令:指定认证提示文字,以及指向加密密码文件的绝对路径。整个过程不依赖额外模块(ngx_http_auth_basic_module 默认已编译),但必须确保 HTTPS 环境和文件权限安全。
1. 生成加密密码文件(用 htpasswd)
密码不能明文存储,需用 htpasswd 工具生成标准 Apache 格式(Nginx 兼容)的加密文件:
- 安装工具(Ubuntu/Debian):
sudo apt install apache2-utils;CentOS/RHEL:sudo yum install httpd-tools - 首次创建用户(如用户名
admin):sudo htpasswd -c /etc/nginx/.htpasswd admin,系统会提示输入并确认密码 - 后续添加用户(不加
-c,避免覆盖):sudo htpasswd /etc/nginx/.htpasswd user2 - 设置文件权限(防止被 Web 访问或越权读取):
sudo chown root:www-data /etc/nginx/.htpasswd && sudo chmod 640 /etc/nginx/.htpasswd
2. 在 location 块中配置 auth_basic
推荐在 location 中精确控制保护范围,比如只限制后台路径:
- 使用前缀匹配(
^~)避免正则干扰:location ^~ /admin/ { ... } - 添加两行关键配置:
auth_basic "Admin Area";(引号内是浏览器弹窗显示的提示文字,非密码提示)auth_basic_user_file /etc/nginx/.htpasswd;(必须为绝对路径) - 完整示例:
location ^~ /admin/ {<br> auth_basic "Admin Area";<br> auth_basic_user_file /etc/nginx/.htpasswd;<br> }
3. 必须启用 HTTPS 并验证配置
Basic Auth 的凭证通过 Base64 编码传输,本质无加密——HTTP 下等于明文发送,极易被截获:
- 确保站点已配置有效 TLS 证书,访问地址为
https://开头 - 测试配置语法:
sudo nginx -t,输出test is successful才可继续 - 重载生效:
sudo nginx -s reload(不中断服务) - 访问受保护路径(如
https://yoursite.com/admin/),应弹出登录框;输错返回 401 状态
4. 安全与维护要点
配置生效后,还需注意几个容易忽略的实际细节:
- 禁止将
.htpasswd放在网站根目录(如/var/www/html/),否则可能被直接下载 - 不同
auth_basicrealm 字符串会被浏览器视为独立认证域,切换时需重新输入 - 定期清理不用账号:
sudo htpasswd -D /etc/nginx/.htpasswd olduser - 如需叠加 IP 限制,可在同一 location 中配合
allow/deny使用


















