2020-03-25 Nginx访问认证

有时,企业在实际工作要求我们为网站设置访问帐号和密码权限,这样操作后,只有拥有帐号密码的用户才可以访问网站内容,访问验证效果如下图所示。

Nginx身份验证窗口

这种使用帐号密码才可以访问网站的功能主要应用在企业内部人员访问的地址上,如企业网站后台、MySQL客户端phpmyadmin、企业内部的CRM、WIKI等网站平台等。下面介绍一个配置示例:

location / {
  auth_basic  "closed site";
  auth_basic_user_file conf/htpasswd;
}

其中,有两个参数需要说明。

  • auth_basic
    语法: auth_basic string | off;
    默认值: auth_basic off;
    使用位置: http,server,location,limit_except
  • auth_basic_user_file
    语法: auth_basic_user_file file;
    默认值: —
    使用位置:http,server,location,limit_except
    auth_basic_user_file参数后接入认证密码文件,file的内容如下:
# comment
name1:password1
name2:password2:comment
name3:password3

可以使用Apache自带的“htpasswd”或者“openssl passwd”命令设置用户和密码到认证文件里,注意,密码是加密的。
选择一个虚拟主机配置在Server标签里,配置内容如下:

auth_basic
auth_basic_user_file /application/nginx/conf/htpasswd;

注意:/application/nginx/conf/是认证文件路径,htpasswd是存放帐号及密码的文件。
WWW虚拟主机的位置配置如下:

[root@web01 conf]# cat extra/01_www.conf 
    server {
    listen       80;
    server_name  www.etiantian.org etiantian.org;
        location / {
            root   html/www;
            index  index.html index.htm;
        auth_basic  "oldboy training";
        auth_basic_user_file /application/nginx/conf/htpasswd;
        }
        access_log logs/access_www.log main gzip buffer=12k flush=5s;
    }
说明:
1. auth_basic  “oldboy training”;设置认证提示字符串“oldboy training”。
2. auth_basic_user_file  /application/nginx/conf/htpasswd; 设置认证的密码文件,即用户输入账户密码后,Nginx会去这个问价你对用户输入是否正确,进而决定是否允许用户访问网站。

生成认证帐号和密码的步骤如下:
1)获取htpasswd设置帐号密码命令。

[root@web01 ~]# yum install -y httpd-tools
[root@web01 ~]# which htpasswd 
/usr/bin/htpasswd

2)创建帐号密码,此帐号密码就是用户访问网站时需要输入的。

[root@web01 ~]# htpasswd -bc /application/nginx/conf/htpasswd oldboy 123456
Adding password for user oldboy
[root@web01 ~]# chmod 400 /application/nginx/conf/htpasswd 
[root@web01 ~]# chown nginx /application/nginx/conf/htpasswd 
[root@web01 ~]# cat /application/nginx/conf/htpasswd 
oldboy:$apr1$eRT2e9pg$ClGvcb.MpBc/pvpZ3./9W0    ---密码是加密的

3)重新加载Nginx是的配置修改生效。

[root@web01 ~]# nginx -t
nginx: the configuration file /application/nginx-1.16.0//conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.16.0//conf/nginx.conf test is successful
[root@web01 ~]# nginx -s reload

4)进行浏览器访问测试。
根据提示输入帐号密码后回车,如下图所示。

最终Nginx身份验证窗口
输入账号及密码

验证后可以访问到网站内容。如果密码不对就不能访问网站内容,而是提示重新输入账号密码或者超过指定次数或者放弃密码验证。

通过验证后的浏览器内容

你可能感兴趣的:(2020-03-25 Nginx访问认证)