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

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 删除指定的用户

原创文章 91 获赞 183 访问量 59万+

猜你喜欢

转载自blog.csdn.net/ywd1992/article/details/90481162
今日推荐