Web入门菜鸟运维

如何使用Nginx+htpasswd实现web加密访问

有的时候我们可能会有这么一种需求,就是你的网站并不想提供一个公共的访问或者某些页面不希望公开,我们希望的是某些特定的客户端可以访问。那么我们可以在访问时要求进行身份认证,就如给你自己的家门加一把锁,以拒绝那些不速之客。

htpasswd安装

htpasswd工具是httpd组件的一部分,在Linux中需要先安装 httpd-tools包 才可实现加密文件的生成:

CentOS为例yum安装:yum  install  httpd-tools

Ubuntu为例apt安装:apt  install  httpd-tools

然后就通过htpasswd生成密码文件:

htpasswd -c /usr/local/nginx/conf/passwd.db andyx

输入密码就行了,至此andyx这个用户身份就创建成功了。

这里我们来看一下htpasswd的用法

htpasswd参数

-c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容.
-n 不更新passwordfile,直接显示密码
-m 使用MD5加密(默认)
-d 使用CRYPT加密(默认)
-p 使用普通文本格式的密码
-s 使用SHA加密
-b 命令行中一并输入用户名和密码而不是根据提示输入密码,可以看见明文,不需要交互
-D 删除指定的用户

我要是想在原有的密码文件中添加一个用户的语句是
htpasswd -b /usr/local/nginx/conf/passwd.db andyx2

下面是删除andyx2这个用户
htpasswd -D /usr/local/nginx/conf/passwd.db andyx2

下面是更改andyx2用户的密码
htpasswd /usr/local/nginx/conf/passwd.db andyx2


Nginx配置文件

接下来就是nginx配置文件的写入格式了(参照下图)。

本文以以下配置为样例:

nginx_htpasswd_web_encryption.png插图
以上操作完成之后,我们就重新启动nginx

nginx -s reload
或者
systemctl restart nginx

然后访问
192.168.22.98:8080/tailon/
就会弹出认证窗口

DruixeryAAAAAElFTkSuQmCC.png插图(1)

输入账号和密码即可继续访问这个页面。

(END)