Nginx用户认证
一般的论坛在管理后台登录时都需要输入管理员密码,已经做了一次用户认证,但是类似这样的一些特殊的访问,为了增加安全性,增加一层Nginx用户认证,如何配置呢?
一、修改虚拟主机配置文件
进入www.test.com的虚拟主机配置文件test.conf并编辑该文件
[root@daixuan vhosts]# cd /usr/local/nginx/conf/vhosts/
[root@daixuan vhosts]# ls
default.conf test.conf
[root@daixuan vhosts]# vim test.confserver //红色为添加内容,“~”表示匹配任何以开头以admin.php结尾的文件匹配。“\”表示脱意“.”
{
listen 80;
server_name www.test.com;
index index.html index.htm index.php;
root /data/www;
location ~ .*admin\.php$ { //注意“{”前面有空格,否则报错
auth_basic "auth";
auth_basic_user_file /usr/local/nginx/conf/.htpasswd;
include fastcgi_params;
fastcgi_pass unix:/tmp/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/www.sock;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
}
}
二、创建密码文件
在安装apache的时候已经安装了apache的htpasswd密码文件生成工具,可以使用yum install httpd安装apache并安装此工具,查看该工具:
[root@daixuan vhosts]# ls /usr/local/apache2/bin/htpasswd
/usr/local/apache2/bin/htpasswd
创建密码文件,同时创建用户daixuan
[root@daixuan vhosts]# htpasswd -c /usr/local/nginx/conf/.htpasswd daixuan
New password:
Re-type new password:
Adding password for user daixuan
[root@daixuan vhosts]# cat /usr/local/nginx/conf/.htpasswd
daixuan:$apr1$V8d6KnIW$19lMeMTK4cHIKvnscilgB0
创建test用户,不加-c (create)选项,否则会重新创建并覆盖.htpasswd文件
[root@daixuan vhosts]# htpasswd /usr/local/nginx/conf/.htpasswd test
New password:
Re-type new password:
Adding password for user test
[root@daixuan vhosts]# /etc/init.d/nginx reload
重新载入 Nginx: [确定]
三、测试
1、使用curl测试
[root@daixuan vhosts]# curl -x127.0.0.1:80 www.test.com/admin.php <html>
<head><title>401 Authorization Required</title></head>
[root@daixuan vhosts]# curl -x127.0.0.1:80 -udaixuan:daixuan www.test.com/admin.php
直接输出网页信息,说明用户验证配置成功
2、浏览器验证
在Firefox浏览器中输入www.test.com,点击管理中心,需要输入用户名daixuan和密码daixuan,才能登录到管理页面。