Nginx:配置访问页面认证(ngx_http_auth_basic_module)
我们在访问一些网站的时候,会遇到下图这样的验证页面,类似这样的验证页面在nginx怎么进行配置呢?下面我们来做一个演示。
- 安装niginx
直接使用yum安装即可,安装默认带有ngx_http_auth_basic_module模块。(配置epel源这些基础问题就不多说了。)
[root@zabbix-agent-1 ~]# yum -y install nginx
- 基本配置
为了体现实验效果,我们需要做一些配置,创建一些目录供nginx访问。
上面的配置中,值得注意的是,Nginx默认是不允许进行列目录的,如果需要使某个目录可以进行浏览,就需要加上auto开头的这几个项。(直接配置一个index.html页面,直接访问,不进行列目录的动作也是可以进行后面的验证的。)
到相应的目录下建几个文件
[root@zabbix-agent-1 ~]# mkdir /opt/nginx_html
[root@zabbix-agent-1 ~]# touch {a..b}.txt
启动nginx,访问ip/nginx_html
就会出现下面的页面。(此时是不需要认证,可以直接看到内容的。)*
- 生成用户密码
这里我们使用httpd-tools来生成用户密码文件。
[root@zabbix-agent-1 nginx_html]# yum -y install httpd-tools
[root@zabbix-agent-1 nginx_html]# htpasswd -bc /etc/nginx/htpasswd.users liaozhengjie 123456
Adding password for user liaozhengjie
[root@zabbix-agent-1 nginx_html]# cat /etc/nginx/htpasswd.users
liaozhengjie:$apr1$MNPNHLj6$pfe0Xikh5ftXbvfWY4elz0
- 配置nginx访问认证
配置如下:
其中,auth_basic 的信息是会显示在认证弹窗里面的,实验中发现,只有在ie浏览器中才会出现相关信息;auth_basic_user_file配置的是用户名和密码文件的位置,后面认证时将使用这个文件的信息进行验证。这两项配置不但可以在location范围内配置,还可以配置到server范围,根据实际需求进行选择。
重新加载nginx配置文件,再次访问会出现以下页面:
[root@zabbix-agent-1 ~]# nginx -s reload
输入刚刚生成的用户名和密码后,就可以看到刚才展示的文件目录。
EOF