使用 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 地址,不然认证通过之后,找不到对应的文件
}
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文件显示正常