nginx的用户验证和apache差不多
1.在配置文件中添加验证语句:
添加auth_basic "auth user" //名字任起
auth_basic_user_file /etc/nginx/htpasswd.conf //目录自己定
2.创建上面所定的目录/etc/nginx/htpasswd.conf
利用apache所带的密码生成工具htpasswd(密码必须是crypt加密的)
/usr/bin/htpasswd -nb user passwd
or
/usr/bin/htpasswd -c /etc/nginx/htpasswd.conf user
3.修改配置文件
-
server {
-
listen 8084;
-
server_name localhost;
-
# auth_basic "auth user";
-
# auth_basic_user_file /etc/nginx/htpasswd.conf;
-
-
#charset koi8-r;
-
-
#access_log logs/host.access.log main;
-
-
location / {
-
root /mnt/ ;
-
# auth_basic "auth user";
-
# auth_basic_user_file /etc/nginx/htpasswd.conf;
-
index index.php index.html index.htm;
-
location ~ ^/admin/.*
{
location
~ \.php$ {
fastcgi_pass
127.0.0.1:9000;
fastcgi_index
index.php;
include
fastcgi_params;
}
auth_basic
"auth";
auth_basic_user_file
/usr/local/nginx/conf/vhost/auth/admin.pass;
}
-
-
}
就是location ~ ^/admin/.* {…} 保护admin目录下的所有文件。如果你只设了/admin/ 那么直接输入/admin/index.php还是可以访问并且运行的。
^/admin/.* 意为保护该目录下所有文件。当然,只需要一次认证。并不会每次请求或每请求一个文件都要认证一下。
针对目录的认证,在一个单独的location中,并且在该location中嵌套一个解释php的location,否则php文件不会执行并且会被下载。
阅读(4218) | 评论(0) | 转发(1) |