[infobox title="介绍"]

Htpasswd是Apache的附带程序,用于生成含有用户名、密码的基本认证文件。可以对某些网页添加基本身份认证。

由于我的服务器使用的是Nginx,所以需要下载组件才可以使用。

Nginx在源码中提供了ngx_http_auth_basic_module这个模块,它提供了最基本的http认证,这是http协议支持的,它会弹出一个框让你输入用户名和密码,只有用户名和密码输入正确了才能访问。

ngx_http_auth_basic_module是使用文件作为存储介质的,用户名是明文存储,而密码是加密之后再存储,这样在认证框输入的用户名和密码必须和文件的信息匹配才能认证成功。

[/infobox]

[infobox title="实践"]

[successbox title="Ubuntu"]

对于Ubuntu系统需要安装Apache的htpasswd组件

apt install apache2-utils


[/successbox]
[successbox title="CentOS"]

对于CentOS系统需要安装httpd组件

yum install httpd [/successbox] [successbox title="htpasswd使用方法"]

htpasswd参数:

 -c:创建一个加密文件;
 -n:不更新加密文件,只将加密后的用户名密码显示在屏幕上;
 -m:默认采用MD5算法对密码进行加密;
 -d:采用CRYPT算法对密码进行加密;
 -p:不对密码进行进行加密,即明文密码;
 -s:采用SHA算法对密码进行加密;
 -b:在命令行中一并输入用户名和密码而不是根据提示输入密码;
 -D:删除指定的用户。

创建用户:

htpasswd -bc .passwd username password

.passwd为你所创建的加密文件,此文件为隐藏文件,默认采用MD5算法进行加密。

username为你所创建的用户名,password为你所创建的密码。

在原加密文件中增加用户:

htpasswd -b .passwd username2 password2

.passwd为你原来创建的加密文件,username2、password2分别为你要增加的用户名以及其对应的密码

删除用户名和密码:

htpasswd -D .passwd username

[/successbox]

[successbox title="启用Nginx的ngx_http_auth_basic_module模块"]

在想要添加登录认证的网页所属的Nginx配置文件中location / {}内部添加以下内容:

auth_basic "netdata";

auth_basic_user_file /etc/nginx/.htpasswd;

其中,auth_basic所填写的是你想为其指定的用户名;auth_basic_user_file所填写的是加密文件路径。

[/successbox]

[/infobox]