nginx对某目录进行身份验证

本例对web根目录下的phpmyadmin文件夹进行认证

#cd /usr/local/nginx/conf
#mkdir htpasswd

在 nginx.conf 文件中对应的 server 段中 添加引用:
location ^~ /phpmyadmin/ {
auth_basic “database-login”;
auth_basic_user_file /usr/local/nginx/conf/htpasswd/DBpass;
}

再在 相应目录中创建一个新文件DBpass
此文件的书写格式是
用户名:密码
用户名 自己随意设置 无需加密

密码必须使用函数 crypt(3) 加密

方法一:

用 htpasswd 工具来创建密码文件

/usr/bin/htpasswd -c /usr/local/nginx/conf/htpasswd/DBpass jpuyy       //-c  Create a new file.创建一个文件 最后跟上用户名

New password:
Re-type new password:
Adding password for user jpuyy

 

方法二:

使用perl 创建密码文件

新建 一个 pw.pl 文件

#!/usr/bin/perl
 use strict;
 my $pw=$ARGV[0] ;
 print crypt($pw,$pw)."\n";

然后执行:
chmod +x pw.pl
./pw.pl password
papAq5PwY/QQM 就是password 的crypt()密码
如果 不用
^~ /phpmyadmin/
而用
/phpmyadmin
将只能对目录进行验证 直接访问其下的文件 将不会弹出登录验证

昨天搞好后草草了事
今天发现认证后php打不开,几经搜索资料,在location里要加上fast-cgi,注意两个location包含关系

#对phpmyadmin进行认证
location ^~/phpmyadmin/ {
   location ~ \.php$ { 	
	fastcgi_pass   127.0.0.1:9000;
	fastcgi_index  index.php;
	fastcgi_param  SCRIPT_FILENAME  /web/$fastcgi_script_name;
	include        fastcgi_params;
	}

	root   /web/;
	index  index.php;
	auth_basic "database-login";
	auth_basic_user_file /usr/local/nginx/conf/htpasswd/DBpass;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注