Nginx用户访问及密码验证
在 nginx 下,提供了 ngx_http_auth_basic_module 模块实现让用户只有输入正确的用户名密码才允许访问web内容。默认情况下,nginx 已经安装了该模块。所以整体的一个过程就是先用第三方工具设置用户名、密码(其中密码已经加过密),然后保存到文件中,接着在 nginx 配置文件中根据之前事先保存的文件开启访问验证。
生成密码可以使用 htpasswd
1、编辑配置文件
[root@web01 extra]# vim www.conf
server_name www.etiantian.org etiantian.org;
server {
listen 80;
server_name www.etiantian.org etiantian.org;
location / {
auth_basic "Please input password"; #这个是提示信息
auth_basic_user_file /application/nginx/conf/htpasswd; #存放密码文件的路径
root html/www;
index index.html index.htm;
}
access_log logs/access_www.log main;
}
2、使用htpasswd生成密码文件
[root@web01 extra]# which htpasswd #查看是否安装htpasswd
/usr/bin/which: no htpasswd
安装httpd,因为htpasswd是Apache的Web服务器内置工具,用于创建和更新储存用户名、域和用户基本认证的密码文件。
[root@web01 extra]# yum -y install httpd #安装httpd
[root@web01 extra]# which htpasswd #查看是否安装
[root@web01 extra]# rpm -qf /usr/bin/htpasswd #查看是否安装
[root@web01 extra]# htpasswd -cb /application/nginx/conf/htpasswd ceshi 123789 #生成密码文件
[root@web01 extra]# chmod 400 /application/nginx/conf/htpasswd #为了安全设置文件权限
3、检查语法并重启
[root@web01 extra]# /application/nginx/sbin/nginx -t
[root@web01 extra]# /application/nginx/sbin/nginx -s reload
1. 浏览器查看
(1)输入www.etiantian.org-->输入用户名密码-->登录成功
(2)不输入用户名或密码,则报错401未授权