本例对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; }
Leave a Reply