Ubuntu上Nginx对网站设置密码验证

很多时候我们需要对一些网站进行密码保护,

创建密码

  1. 安装工具
1
sudo apt-get install apache2-utils
  1. 创建用户名和密码,该文件位置可以随意放置,但是建议一定要记得放在哪个位置,还有尽量都放在一起,容易找到管理,如下是我的设置,我放在/usr/password目录下,password是我创建的一个管理专门管理密码的目录
1
sudo htpasswd -bc password admin admin123
1
2
3
4
5
6
7
8
-c:创建一个加密文件;
-n:不更新加密文件,只将加密后的用户名密码显示在屏幕上;
-m:默认采用MD5算法对密码进行加密;
-d:采用CRYPT算法对密码进行加密;
-p:不对密码进行进行加密,即明文密码;
-s:采用SHA算法对密码进行加密;
-b:在命令行中一并输入用户名和密码而不是根据提示输入密码;
-D:删除指定的用户。

admin 是用户名,密码:admin123,默认采用MD5加密方式。

  1. 在原有密码文件中增加下一个用户
1
sudo htpasswd -b password.user admin1 admin1234

去掉-c选项,即可在第一个用户之后添加第二个用户,依此类推。

  1. 利用htpasswd命令删除用户名和密码
1
sudo htpasswd -D password.user admin1
  1. 利用htpasswd命令修改密码
1
sudo htpasswd -b password.user admin admin123456789

修改nginx配置文件

找到 nginx 配置文件,因为我们要对整个站点开启验证,所以在配置文件中的第一个server修改如下:

1
2
3
4
5
6
7
8
9
server {
.......
#新增下面两行
auth_basic "Input name password"; #这里是验证时的提示信息
auth_basic_user_file /usr/password;
location /{
......
}
}

重启nginx

1
2
sudo systemctl reload nginx
sudo systemctl restart nginx