如何在CentOS7上使用HTTPD Tools给Nginx设置访问密码增加安全性

在本篇文章中您将学习如何在Centos7上为Nginx设置用户名和密码,从而实现限制资源的访问。具体步骤如下:

1.安装HTTPD Tools工具包

这里要使用到一个命令行工具htpassword,此工具可以生成访问密码。此命令是httpd-tools包的一部分,因此第一步是安装此工具包。Centos可以直接使用yum命令进行安装,你也可根据需要选择编译安装:

[deploy@instance-ea0dh7mn ~]$ sudo yum -y install httpd-tools

2.使用htpassword命令生成账号信息

[deploy@instance-ea0dh7mn ~]$ sudo htpasswd -c /usr/local/nginx/conf/passwd test123
New password: 
Re-type new password: 
Adding password for user test123

说明:htpasswd生成的密码和关联的用户名将存储在您指定的文件中。密码将被加密,文件名可以是你喜欢的任意名称。本文的账号信息保存在/usr/local/nginx/conf/passwd。这里的test123是用户名,你可以根据需要自行设置成其它用户名。执行命令时会要求你连续输入两次密码。输入成功后,会提示已经为test123这个用户添加了密码。

我们可以看下最后生成的密码文件的内容:

[deploy@instance-ea0dh7mn ~]$ cat /usr/local/nginx/conf/passwd 
test123:$AbP1$Dhl87hIu$BXyCfQ7hiEos1DiqgwEYcZ16

其中test123就是用户名 ,分号后面就是加密过后的密码。

3.修改nginx配置文件nginx.conf,将生成的账号文件路劲配置进去

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

[deploy@instance-ea0dh7mn ~]$ sudo vi /usr/local/nginx/conf/nginx.conf
.......
server {
   listen 80;
   server_name  localhost;
   index index.html;
   root /home/wwwroot/default;

   #新增下面两行
   auth_basic "My Server"; #这里服务器的提示信息,可以随意设置
   auth_basic_user_file /usr/local/nginx/conf/passwd; #这里是加密文件路劲(推荐)
   #auth_basic_user_file passwd; 也可以使用此种相对路径的方式,前提是passwd和nginx.conf文件在同一个目录下

   location /{
     .......
   }
}
.......

4.重启nginx

[deploy@instance-ea0dh7mn ~]$ ./nginx -t  #检查配置文件是否正确
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[deploy@instance-ea0dh7mn ~]$ ./nginx -s reload

5.访问站点进行测试

如果出现上面的的弹窗就说明一切配置完成


如果不输入账号信息点击取消就会出现401 Authorization Required的提示信息。

这样就完成了Nginx资源访问权限设置。

the end

热门文章