
最后查出的原因是: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(本次补充核对)。
