Nginx 使用 http auth basic 认证

使用 nginx 作为前端服务器。某些资源要保护。用 http auth basic 认证简单方便。
nginx 的 http auth basic 的密码是用 crypt(3) 加密的。具体可以参考:http://wiki.nginx.org/HttpAuthBasicModule

 

以我们做一个简单的后台管理为例, 地址:http://xxxx/admin/*, 对admin 下面的文件进行权限管理;

1. 进入ngnix配置的地址,以我的ubuntu为例;  cd /etc/ngnix

2. 使用命令生成passfile 文件: htpasswd -c -d /etc/nginx/pass_file  username

a. 输入以上命令,回车输入密码,再次回车,输入确认密码

3. 检查pass_file是否已经存在 /etc/ngnix/pass_file

4. 修改ngnix 配置

location ~ /admin {
auth_basic “Restricted”;
auth_basic_user_file /etc/nginx/pass_file;//请使用绝对路径
root   /home/www/admin; //host 地址,不然认证通过之后,找不到对应的文件
}

5. 重启ngnix ,sudo service ngnix reload;

6. 登录 http://xxxx/admin/*,弹出验证框,说明验证配置完成

 

如果admin中有php,就会发现 php url不能正常的解析,我们需要重新配置,配置如下:

location ~ /admin {

auth_basic “Restricted”;
auth_basic_user_file /etc/nginx/pass_file;//请使用绝对路径
root   /home/www/admin; //host 地址,不然认证通过之后,找不到对应的文件
if ($request_filename ~* .php)
{
fastcgi_pass   127.0.0.1:9000;
}//下面的文件不能放在括号中,否则会报错
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /home/www/admin$fastcgi_script_name;//路径同root
include fastcgi_params;

}

修改配置,重启ngnix即可,php文件显示正常

欢迎关注下方“非著名资深码农“公众号进行交流~

发表评论

邮箱地址不会被公开。