今天好奇,想在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即可。