使用 htpasswd 生成 Nginx 基本认证凭据,需先安装对应工具(如 Ubuntu 用 apt install apache2-utils),再用 sudo htpasswd -B -c /etc/nginx/.htpasswd admin 创建 bcrypt 加密的 .htpasswd 文件,后续添加用户省略 -c;文件须设权限 640 并归属 root:www-data 或 root:nginx,且置于 Web 根目录外。

用 htpasswd 工具生成 Nginx 的 HTTP 基本认证凭证,核心是创建符合 Apache 格式、Nginx 兼容的加密密码文件(.htpasswd),每行包含一个用户名和其哈希密码。
安装 htpasswd 工具
不同系统安装命令不同,但目的都是获取 htpasswd 可执行文件:
- Ubuntu / Debian:
sudo apt install apache2-utils - CentOS / RHEL / AlmaLinux:
sudo yum install httpd-tools或sudo dnf install httpd-tools - macOS(Homebrew):
brew install httpd
生成 .htpasswd 文件
推荐使用 -B 参数启用 bcrypt 加密(安全性高,需 Nginx ≥ 1.19.0);若版本较旧,可省略 -B 使用默认 MD5($apr1$ 格式):
- 首次创建文件并添加用户(如用户名
admin):sudo htpasswd -B -c /etc/nginx/.htpasswd admin
执行后会提示输入并确认密码 - 后续追加用户(不加
-c,否则覆盖整个文件):sudo htpasswd -B /etc/nginx/.htpasswd user2
验证与权限设置
生成后检查文件内容是否符合格式(一行一用户,形如 admin:$2y$10$abc...),再确保 Nginx 能安全读取:
- 确认文件路径为绝对路径,且不在 Web 根目录下(例如不能放在
/var/www/html/) - 设合理权限防止越权访问:
sudo chmod 640 /etc/nginx/.htpasswdsudo chown root:www-data /etc/nginx/.htpasswd(Debian/Ubuntu)或root:nginx(RHEL/CentOS)
替代方案:无 htpasswd 时手动构造
仅限临时测试,不推荐生产环境:
- 用 OpenSSL 生成 crypt 格式(弱安全):
printf "test:$(openssl passwd -crypt 123456)\n" | sudo tee -a /etc/nginx/.htpasswd - 或使用可信在线工具(如 lddgo.net/htpasswd)生成 bcrypt/MD5 行,复制粘贴到本地文件中


















