htpasswd的使用
Nginx的源码提供了ngx_http_auth_basic_module这个模块,它可以来解决web访问认证的问题。这个模块是默认就编译进nginx的,可以直接拿来使用。
ngx_http_auth_basic_module它提供了最基本的http认证,这是http协议支持的,它会弹出一个框让你输入用户名和密码,只有用户名和密码输入正确了才能访问,这样就能保证自己的web不被任何人所访问。
ngx_http_auth_basic_module是使用文件作为存储介质的,用户名是明文存储,而密码是加密之后再存储,这样在认证框输入的用户名和密码必须和文件的信息匹配才能认证成功。这里使用htpasswd这个命令来生成存放用户名和密码的文件。
介绍:
htpasswd 是开源 http 服务器 apache httpd 的一个命令工具,用于生成 http 基本认证的密码文件。
安装:
centos
yum -y install httpd
ubuntu
sudo apt-get install apache2-utils
语法及参数
Usage:
htpasswd [-cimBdpsDv] [-C cost] passwordfile username
htpasswd -b[cmBdpsDv] [-C cost] passwordfile username password
htpasswd -n[imBdps] [-C cost] username
htpasswd -nb[mBdps] [-C cost] username password
参数说明:
-c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容.
-n 不更新passwordfile,只将加密后的用户名密码显示在屏幕上;
-m 默认采用MD5算法对密码进行加密
-d 采用CRYPT算法对密码进行加密
-p 不对密码进行进行加密,即使用普通文本格式的密码
-s 采用SHA算法对密码进行加密
-b 命令行中一并输入用户名和密码而不是根据提示输入密码,可以看见明文,不需要交互
-D 删除指定的用户
l例子:
例子1
[root@web02 /application/nginx/conf/extra]# yum install httpd-tools -y
[root@web02 /application/nginx/conf/extra]# htpasswd -cb /application/nginx/conf/htpasswd sunwenchao 123456
Adding password for user sunwenchao
[root@web02 /application/nginx/conf/extra]# chown www /application/nginx/conf/htpasswd
[root@web02 /application/nginx/conf/extra]# chmod 400 /application/nginx/conf/htpasswd
nginx配置文件内容如下
auth_basic "sunwenchao blog";
auth_basic_user_file /application/nginx/conf/htpasswd;
例子2:利用htpasswd命令添加用户
htpasswd -c /application/nginx/conf/htpasswd Sun
New password:
Re-type new password:
Adding password for user Javen
例子3:不用交互的模式
htpasswd -bc /application/nginx/conf/htpasswd Sun 1234565
说明:在/application/nginx/conf/目录下生成一个htpasswd文件,用户名Sun,密码:123456,默认采用MD5加密方式。
例子4 在原有密码文件中增加下一个用户
注:去掉-c选项即可在第一个用户之后添加第二个用户
htpasswd -b /application/nginx/conf/htpasswd Sun 1234565
例子5 不更新密码文件,只在屏幕上输出用户名和经过加密后的密码。
htpasswd -nb Sun 1234565
例子6 利用htpasswd命令删除用户名和密码
htpasswd -D /application/nginx/conf/htpasswd Sun
例子7:利用htpasswd命令修改密码,
htpasswd 并没有直接修改密码的函数,需要先使用htpasswd删除命令删除指定用户,再利用htpasswd添加用户命令创建用户即可实现修改密码的功能
htpasswd -D /application/nginx/conf/htpasswd Sun
htpasswd -b /application/nginx/conf/htpasswd Sun 1234565