nginx 通过 auth_basic 启用 http 基础认证,需配置 auth_basic 和 auth_basic_user_file 指令,并用 htpasswd 生成加密密码文件,且必须配合 https 使用以防凭据明文泄露。

在 Nginx 中配置 auth_basic 实现基础身份验证,核心是启用 HTTP Basic Auth 并提供一个受保护的用户密码文件。它简单轻量,适合后台、测试环境或内部工具页面等低敏感场景。
启用 auth_basic 并指定验证域
在 server 或 location 块中添加以下指令:
-
auth_basic "Restricted Area";—— 开启基础认证,并设置浏览器弹窗显示的提示文字(即“realm”) -
auth_basic_user_file /etc/nginx/.htpasswd;—— 指定存储用户名和加密密码的文件路径
例如限制整个站点:
location / {
auth_basic "Admin Access Required";
auth_basic_user_file /etc/nginx/.htpasswd;
}
生成 .htpasswd 密码文件
Nginx 不自带密码生成工具,需用 htpasswd(Apache 工具)或 OpenSSL 手动创建。推荐使用 htpasswd:
- 安装(Ubuntu/Debian):
sudo apt install apache2-utils - 首次创建文件并添加用户:
sudo htpasswd -c /etc/nginx/.htpasswd alice(会提示输入密码) - 后续添加用户(不加
-c,避免覆盖):sudo htpasswd /etc/nginx/.htpasswd bob
注意:文件路径需确保 Nginx worker 进程有读取权限(如 chmod 644 /etc/nginx/.htpasswd)。
验证配置并重载 Nginx
配置完成后务必检查语法并重载服务:
- 测试配置:
sudo nginx -t - 重载生效:
sudo nginx -s reload或sudo systemctl reload nginx
访问对应 URL 时,浏览器会弹出登录框;输错凭据会返回 401 状态码。
安全提醒与注意事项
基础认证本身不加密传输内容,必须配合 HTTPS 使用,否则账号密码将以 Base64 编码明文发送,极易被截获。
- 不要在 HTTP 站点启用
auth_basic - 避免在公开路径(如
/api或/login)单独依赖它做主认证 - 密码文件切勿放在网站根目录下可被直接访问的位置(如
/var/www/html/.htpasswd)











