可能存在的需求
网页不想让所有人访问到,只让知道页面密码的人可以打开
某些组件的web端管理页面无用户名密码认证可直接打开,添加一个用户验证
ES如果不添加search-guard,是否有别的更简便的方式添加head页面的认证
有什么解决办法?
借助Nginx+秘钥文件认证的方式,Nginx提供了一个“ngx_http_auth_basic_module”的模块,这个模块默认情况下就已经安装了,使用这个模块加上httpd-tools中提供的htpasswd方法生成秘钥文件可以满足我们上面的一些需求,关于这个模块的介绍,可以查看nginx官网(ngx_http_auth_basic_module)
安装htpasswd(httpd-tools)
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 删除指定的用户