↓ 跳过正文

有关nginx的basic auth认证问题

正能量 2 分钟阅读 更新于 2026-10-18

说明 Nginx Basic Auth 的认证配置、密码文件路径与排错方向。

Linux 系统:原站配图。

有关nginx的basic auth认证问题配图
今天好奇,想在nginx上配置下basic认证。在网上搜索了一大把的资料,照着步骤一步一步的配置,最后发现认证失败!!!

最后查出的原因是:windows上使用明文,linux和Unix系统则使用Crypt加密

配置如下:

修改nginx.conf

location / {
    auth_basic           "MMGG.NET";
    auth_basic_user_file htpasswd;
}

生成htpasswd文件放到nginx的conf目录,windows下请写全路径,且用/来代替\

htpasswd文件在windows下则直接使用明文,如:admin:admin

但是在linux下就需要使用Crypt加密,方法如下:

#!/usr/bin/perl
use strict;
chomp(my $filename=$ARGV[0]);
chomp(my $username=$ARGV[1]);
chomp(my $password=$ARGV[2]);
if (!$filename || !$username || !$password) {
  print "USAGE: ./crypt.pl filename username password\n\n";
} else {
  open my $fh, ">>", $filename or die $!;
  print $fh $username . ":" . crypt($password, $username) . "\n";
  close $fh or die $!;
}

拷贝以上代码另存文件为crypt.pl,然后加权限,chmod +x ./crypt.pl

最后执行:./crypt htpasswd admin admin

拷贝当前目录下的htpasswd文件到nginx的conf目录,重启或重载nginx即可。

补充阅读
#

说明 Nginx Basic Auth 的认证配置、密码文件路径与排错方向。

如何理解与使用
#

auth_basic_user_file 指向认证文件,文件格式及密码摘要应按所用版本文档确认;原文把 Windows 与明文密码简单对应的说法不能作为通用规则。

验证与边界
#

区分未提供凭据时的 401、错误凭据被拒绝和正确凭据成功三个结果,同时检查工作进程读取文件的权限。认证接口应通过 HTTPS 使用。

参考:Nginx Basic Auth(本次补充核对)。