ngx_http_auth_basic_module它提供了最基本的http认证,这是http协议支持的,它会d出一个框让你输入用户名和密码,只有用户名和密码输入正确了才能访问,这样就能保证自己的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 删除指定的用户
[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
htpasswd -c /application/nginx/conf/htpasswd Sun
New password:
Re-type new password:
Adding password for user Javen
htpasswd -bc /application/nginx/conf/htpasswd Sun 1234565
说明:在/application/nginx/conf/目录下生成一个htpasswd文件,用户名Sun,密码:123456,默认采用MD5加密方式。
注:去掉-c选项即可在第一个用户之后添加第二个用户
htpasswd -b /application/nginx/conf/htpasswd Sun 1234565
htpasswd -nb Sun 1234565
htpasswd -D /application/nginx/conf/htpasswd Sun
htpasswd 并没有直接修改密码的函数,需要先使用htpasswd删除命令删除指定用户,再利用htpasswd添加用户命令创建用户即可实现修改密码的功能
htpasswd -D /application/nginx/conf/htpasswd Sun
htpasswd -b /application/nginx/conf/htpasswd Sun 1234565
可能是因为您没有正确配置tinyproxybaseauth参数。首先,您需要设置TinyProxyBaseAuth参数,指定一个带有用户名和密码的文件路径。要将用户名和密码放入文件中,您需要使用“htpasswd”程序,该程序是Apache的一部分。例如,要添加一个用户“admin”和密码“adminpassword”,请使用以下命令:htpasswd -c /etc/tinyproxy/tinyproxy-auth admin adminpassword
apache服务器已经内置用户验证机制,大家只要适当的加以设置,便可以控制网站的某些部分要用户验证。通常分为以下三步:
1、在apache的配置文件httpd.conf中声明要进行验证的目录
2、在要进行验证的目录中创建.htaccess文件,在此文件中指明用于验证的文件存放的位置
3、根据.htaccess指明的位置,用apache自带的htpasswd命令创建用于验证的文件
步骤说明:
假设要对/home/ddd这个目录进行访问控制。(这个目录不在APACHE的主目录中,因此要用alias 添加为虚拟目录)
1、在apache的配置文件httpd.conf中声明要进行验证的目录
编辑httpd.conf
LoadModule auth_module modules/mod_auth.so #需要加载此模块进行认证
Alias /test "/home/ddd" #添加为虚拟目录
Options Indexes MultiViews
AllowOverride All #允许用.htaccess文件中指定的验证文件进行身份验证
Order allow,deny
Allow from all
#AllowOverride all 表示进行身份验证 这是关键的设置
此外,也可用AllowOverride AuthConfig
实例:
ServerName test.xxx.com
ServerAlias xxx.com 123.123.123.123
DocumentRoot /data/ddd/
Options Indexes FollowSymlinks MultiViews
AllowOverride All
ErrorLog /error.log
2、在要进行验证的目录中创建.htaccess文件,在此文件中指明用于验证的文件存放的位置
在/home/ddd下创建.htaccess文件
vi /home/ddd/.htaccess,内容如下:
AuthName "请输入用户名及口令"
AuthType Basic
AuthUserFile /home/.htpasswd
require valid-user
#AuthName 描述,出现在验证对话框标题栏中
#AuthUserFile /home/.htpasswd (指定验证文件存放于/home中,文件名为.htpasswd,此文件具有隐含属性,其中包括允许访问的用户名及密码。
#require valid-user 使用验证文件中的有效用户进行验证
也可使用 require user <用户>来指定特定用户进行验证
#密码文件推荐取名为.htpasswd,因为apache默认系统对“.ht”开头的文件默认不允许外部读取,安全系数会高一些。
3、根据.htaccess指明的位置,用apache自带的htpasswd命令创建用于验证的文件
由于已经在第2步中指定验证文件为/home/.htpasswd文件,所以下面创建这个文件
htpasswd -c /home/.htpasswd jp #创建.htpasswd文件,并添加用户jp,会要求输入口令
htpasswd /home/.htpasswd test #.htpasswd文件中添加第二个用户:test)
也可以不通过交互方式,直接在命令行,将口令添加到.htpasswd文件中
htpasswd -bc /home/.htpasswd jp 111 (创建.htpasswd文件,并添加用户jp,密码为111)
htpasswd -b /home/.htpasswd test 222 (.htpasswd文件中添加第二个用户:test 密码为222)
#第一次创建用户要用到-c 参数 第2次添加用户,就不用-c参数,因为已经有.htpasswd文件,就不用再创建了。-b表示从命令行直接获取参数值,添加到验证文件.htpasswd中
如果想修改密码,可以用如下命令:
htpasswd -m .htpasswd jp
对存放于.htpasswd文件中的用户jp进行口令更改
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)