一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Nginx 如何配置基础的 basic_auth 密码访问认证

时间:2026-08-16 12:06:49 编辑:袖梨 来源:一聚教程网

Nginx 启用 basic_auth 需生成 .htpasswd 密码文件、在 location/server 块中添加 auth_basic 和 auth_basic_user_file 两行配置,并强制通过 HTTPS 传输。

直接在 Nginx 配置里加两行指令就能启用 basic_auth,核心是生成加密密码文件 + 正确引用路径 + 保证 HTTPS 传输安全。

生成 .htpasswd 密码文件

htpasswd 工具创建标准格式的用户凭据文件(Nginx 自带模块不支持明文):

  1. Ubuntu/Debian 系统:运行 sudo apt install apache2-utils
  2. CentOS/RHEL 系统:运行 sudo yum install httpd-toolssudo dnf install httpd-tools
  3. 首次创建文件并添加用户(如用户名 admin):sudo htpasswd -c /etc/nginx/.htpasswd admin,按提示输入密码
  4. 后续追加用户去掉 -c 参数,避免覆盖已有账号:sudo htpasswd /etc/nginx/.htpasswd user2
  5. 确认文件可读且权限合理:sudo chmod 640 /etc/nginx/.htpasswdsudo chown root:www-data /etc/nginx/.htpasswd

在 location 或 server 块中启用认证

把认证限制在具体路径更安全,推荐写在 location 块内:

  1. 保护整个站点:在 server 块或根 location / { ... } 里添加
  2. 只保护某个目录(如 /admin/):location ^~ /admin/ { ... }^~ 表示前缀匹配且优先级高
  3. 写入两行关键配置:

    auth_basic "Restricted Area";(引号内是登录弹窗显示的提示文字)

    auth_basic_user_file /etc/nginx/.htpasswd;(必须用绝对路径)

检查配置并重载生效

别跳过验证步骤,否则可能 403 或认证不触发:

  1. 执行 sudo nginx -t 检查语法,看到 test is successful 才继续
  2. 运行 sudo nginx -s reload 平滑重载配置,不中断服务
  3. 用 HTTPS 地址访问目标路径(例如 https://example.com/admin/),浏览器应弹出登录框
  4. 若仍能直接访问,检查是否误写成相对路径、文件权限不对、或配置未加载到实际生效的 server 块

必须注意的安全前提

Basic Auth 本身不加密凭证,仅编码传输,所以:

  1. 绝对不要在 HTTP 明文环境下使用,否则用户名密码会被轻易截获
  2. .htpasswd 文件不能放在 Web 根目录下(如 /var/www/html),防止被外部直接下载
  3. 定期清理不用的账号,密码建议每 3–6 个月更新一次
  4. 如需叠加 IP 限制,可配合 allow/denyauth_request 模块增强控制

热门栏目