Nginx 访问认证
应用环境:
企业内部人员,访问一些企业内部的网站,例如phpmyadmin或者公司的一些文档服务器
Nginx配置:
安装httpd,为了实现Nginx可以使用htpasswd命令
[root@node1 vhost]# yum -y install httpd # 安装httpd,为了实现Nginx可以使用htpasswd命令
[root@node1 ~]# mkdir /usr/local/nginx/conf/htpasswd/ #创建存放用户和密码的目录
[root@node1 ~]# htpasswd -bc /usr/local/nginx/conf/htpasswd/test_user user password #创建一个用户密码文件
test_user:文件名称
user:用户
password:密码(是经过加密的)
[root@node1 htpasswd]# cat test_user
user:wPqXPPVO5ad9M #用户和加密密码
Nginx配置文件:
server
{
listen 80;
server_name learn1.proxy.com;
index index.php index.html index.htm;
root /data/www/learn1.proxy.com;
error_log /data/weblogs/learn1_error.log crit;
access_log /data/wwwlogs/learn1.log access;
location / {
auth_basic "Please Input Password..."; #提示信息
auth_basic_user_file /usr/local/nginx/conf/htpasswd/test_user; #用户密码文件存放路径,这里写绝对路径,否则会报错403
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
}
测试:
htpasswd命令选项参数说明:
-c创建一个加密文件。
-n不更新加密文件,只将htpasswd命令加密后的用户名和密码显示在屏幕上。
-m默认htpassswd命令采用MD5算法对密码进行加密,该参数默认情况下可以不加。
-d表示htpassswd命令采用CRYPT算法对密码进行加密。
-s表示htpassswd命令采用SHA算法对密码进行加密。
-p表示htpassswd命令不对密码进行进行加密,即明文密码。
-b表示在htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码。
-D表示删除指定的用户。
[root@node1 htpasswd]# htpasswd -b test_user bbb bbb #添加新用户
Adding password for user bbb #添加用户提示信息
[root@node1 htpasswd]# cat test_user #内容
user:wPqXPPVO5ad9M
bbb:V1wqRumuBNlKE
添加新用户时,不可以使用htpasswd -bc test_user bbb bbb这样的方式进行添加,否则会覆盖已有用户。
[root@node1 htpasswd]# htpasswd -D test_user bbb #删除用户
Deleting password for user bbb #删除用户提示信息
[root@node1 htpasswd]# cat test_user
user:wPqXPPVO5ad9M