Nginx设置访问Web页面时用户名密码验证

    xiaoxiao2022-07-12  144

    1、可能存在的需求

    网页不想让所有人访问到,只让知道页面密码的人可以打开某些组件的web端管理页面无用户名密码认证可直接打开,添加一个用户验证ES如果不添加search-guard,是否有别的更简便的方式添加head页面的认证

    2、解决方法

    借助Nginx+秘钥文件认证的方式,Nginx提供了一个“ngx_http_auth_basic_module”的模块,这个模块默认情况下就已经安装了,使用这个模块加上httpd-tools中提供的htpasswd方法生成秘钥文件可以满足我们上面的一些需求,关于这个模块的介绍,可以查看nginx官网(ngx_http_auth_basic_module)

    安装htpasswd(httpd-tools)

    链接:https://pan.baidu.com/s/1TiUhlhJf9a5M1_kjqmUPOw 提取码:mn6n

    rpm -ivh httpd-tools-2.4.6-88.el7.centos.x86_64.rpm 生成密钥文件

    其中,“passwd.db”为密钥文件名字,“gsum”为用户名,根据需求修改

    htpasswd -c /etc/nginx/conf.d/passwd.db gsum

    回车之后按照提示输入要设置的密码即可,密码默认是MD5加密的,如果不想加密可以在生成时添加-p参数

    修改Nginx配置文件

    根据官网的文档我们知道,“ngx_http_auth_basic_module”模块的配置只有如下两行:

    auth_basic "closed site"; #页面提示信息 auth_basic_user_file conf/htpasswd; #秘钥文件

    所以我们在我们的前端页面的Nginx配置文件中加入如下两行配置

    验证

    再次打开我们的前端发现,已经需要输入用户名密码才能访问

    htpasswd命令选项参数说明

    -c 创建一个加密文件 -n 不更新加密文件,只将htpasswd命令加密后的用户名密码显示在屏幕上 -m 默认htpassswd命令采用MD5算法对密码进行加密 -d htpassswd命令采用CRYPT算法对密码进行加密 -p htpassswd命令不对密码进行进行加密,即明文密码 -s htpassswd命令采用SHA算法对密码进行加密 -b htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码 -D 删除指定的用户

    最新回复(0)