Nginx是一个高性能的WEB服务器,愈来愈多的用户使用,若是您的某个站点不但愿对外公开(好比PHPMyAdmin),可使用htpasswd实现Nginx验证访问。php
安装htpasswd
htpasswd是Apache密码生成工具,Nginx支持auth_basic认证,所以我门能够将生成的密码用于Nginx中,输入一行命令便可安装:python
yum -y install httpd-tools
参数以下:linux
-c 建立passwdfile.若是passwdfile 已经存在,那么它会从新写入并删去原有内容. -n 不更新passwordfile,直接显示密码 -m 使用MD5加密(默认) -d 使用CRYPT加密(默认) -p 使用普通文本格式的密码 -s 使用SHA加密 -b 命令行中一并输入用户名和密码而不是根据提示输入密码,能够看见明文,不须要交互 -D 删除指定的用户
生成密码
#进入home目录 cd /home #生成密码 htpasswd -c ./passwd username #执行上命令后会要求输入两次密码,./passwd 是在当前目录下建立密码文件passwd ,username即为须要设置的帐号
若是你不想安装htpasswd,也能够经过在线 htpasswd 生成器来完成。nginx
载入配置
接下来在Nginx配置文件中(一般是server段内),加入以下两行,并重载Nginx(service nginx reload
)便可生效。服务器
auth_basic "Please input password"; #这里是验证时的提示信息 auth_basic_user_file /home/passwd;
访问测试
再访问站点,提示须要输入用户名和密码才能够访问,此方法适合不宜公开的站点,好比PHPmyadmin,这样可避免被弱口令扫描,无疑再上了一把锁。工具
实例性能
利用htpasswd命令添加用户测试
htpasswd -bc .passwd www.linuxde.net php
在bin目录下生成一个.passwd文件,用户名www.linuxde.net,密码:php,默认采用MD5加密方式。加密
在原有密码文件中增长下一个用户url
htpasswd -b .passwd Jack 123456
去掉-c
选项,便可在第一个用户以后添加第二个用户,依此类推。
不更新密码文件,只显示加密后的用户名和密码
htpasswd -nb Jack 123456
不更新.passwd文件,只在屏幕上输出用户名和通过加密后的密码。
利用htpasswd命令删除用户名和密码
htpasswd -D .passwd Jack
利用htpasswd命令修改密码
htpasswd -D .passwd Jack htpasswd -b .passwd Jack 123456
即先使用htpasswd删除命令删除指定用户,再利用htpasswd添加用户命令建立用户便可实现修改密码的功能。
实际样例以下:
nginx配置:
server { listen 80; server_name kba.sche.cn; access_log /home/logs/nginx/kba.sche.cn/access_log main; error_log /home/logs/nginx/kba.sche.cn/error_log; log_not_found on; include conf/*.conf; location / { proxy_pass http://192.168.1.125:500; auth_basic "Basic Authentication"; auth_basic_user_file "/home/nginx/htpasswd/kba.htpasswd"; } }
生成密码
建立密码文件并新增用户 htpasswd -c /home//nginx/htpasswd/kba.htpasswd tom 回车提示输入两次设置的密码 新增其余用户,默认加密策略 htpasswd -b /home/nginx/htpasswd/kba.htpasswd jack Jk123
重启nginx 便可。