Nginx进阶 配置-Nginx auth_basic 身份认证

前言

在公司前期投入研发时,尤其针对于ZF的客户,往往是很多需求含糊不清,可项目的里程碑节点已是板上定钉。在这种情况下,需求组应和研发组协同推敲,不断的制定计划、出demo,拿着我们推测出的构建想法及原型去征求客户的意见。
对于大屏、驾驶舱等可以前端先行的项目,往往不再是拿着高保真图片,而是部署到演示环境,将客户提供的真实数据展现于相关图表,数据可以使用前端mock数据,不用任何后端系统支撑。还有更low的是直接写死在图表上。用这个服务做演示汇报。这种情况下,有些驾驶舱、大屏的数据就涉及到敏感问题。演示的环境基本都是http://xxx.xxxx.xxx/xxxx ,针对于大屏并没有去配置用户权限控制,甚至这个时候后台的鉴权服务还没有搭建起来,还在属于设计的阶段,对于内网部署的还好去解释不做用户的鉴权。如果客户要求放在外网上,只要是拿到了url地址,任何人都可以访问。在前后台都不愿意去写一套登录代码认证的情况下,0代码完成用户认证,可以考虑使用Nginx的 auth_basic 。

个人经历

客户第二天需要验收大屏页面,加班到晚上9点刚把前端的包部署完准备下班,突然领导要求访问的大屏页面地址加个用户名登录,这样数据放在互联网上谁都可以访问查看,太危险,造成数据泄露。起初想法是让前端去实现,尽快搞完下班,但是前端组有别的任务,压力给到我这边。后来想到了nginx的负载均衡,应该是可以做到,查了相关资料,半小时搞定。记录下文章,给日后也有相关需求的项目团队提供帮助。

auth_basic 配置步骤

1.生成密码(Linux)

Nginx绝大部分公司使用的目的还是作为一个负载均衡的功能,当然Nginx里还提供了其它的一些作用。今天一起来学习下Nginx的 Auth_basic 鉴权。
Nginx下载、安装、启动这种弱智般的操作流程不再多写。要是不会建议转行哈。
ngx_http_auth_basic_module模块允许通过使用“HTTP基本认证”协议验证用户名和密码来限制对资源的访问。 大致的过程就是在nginx下生成一个用户密码的配置文件,而后在conf配置文件中配置一下就OK了。
访问还可以根据地址、子请求的结果或JWT进行限制。同时通过地址和密码限制访问由满足指令控制。
同时,auth_basic要求放置的用户文件需要进行hash值计算,要对明文密码进行处理。用户文件后面说明。
注:加密处理只针对Linux服务器,Windows server不需要加密后的用户文件,不需要。不需要!!!只需要将明文用户密码作为一个文件就可以,网上没有对windows server的文件解释,自己摸索了半天才发现。

yum install httpd-tools -y

确定服务器是否安装了 http,而后生成用户名密码

htpasswd -nbm admin 12345678

使用了如上命令后,会生成加密后的hash值,大概是如下的样子

admin:$apr1$nkxLxBPa$EGa.u5yKuQ08m6g/8bGb9.

创建一个文件,不要有后缀的,将生成的用户密码贴进来。如果是多个用户,换行贴入就可以。文件可命名为auth_basic_user_file。放在可以找到的位置路径上。

2.配置

        location / {
            root   html;
            index  index.html index.htm;
			# 开启功能模块,关闭为off
			auth_basic on;
			# 指定密码配置文件
			auth_basic_user_file home/web/auth/auth_basic_user_file;
			# 验证通过后 跳转的相关路径
			proxy_pass   http://127.0.0.1:9003;
        }

代码解读

nginx监听指定端口,用户访问指定的端口后,跳出验证用户密码,auth_basic on 代表打开验证登录,输入的用户密码要在生成的用户信息文件里可以匹配的上,完成验证后,跳转到9003端口的页面上。

业务思路

我这边的服务器是window server,我认为Linux也一样可以参考,首先将服务器的9003号端口也就是我的大屏部署的端口进站关掉,这样即便项目部署成功去访问9003是访问不进来的,只能通过访问我的ngxin监听的端口。如果访问我的nginx监听端口,则跳转出登录,登录成功后内部自己跳转到9003。如下图
Nginx进阶 配置-Nginx auth_basic 身份认证_第1张图片

访问9007验证登录,输入配置的南京发改委账号信息,验证成功后显示大屏:
Nginx进阶 配置-Nginx auth_basic 身份认证_第2张图片
Nginx进阶 配置-Nginx auth_basic 身份认证_第3张图片

0代码完成用户的登录。

 /* powerd by zym */
 0 error(s),0 warning(s)

你可能感兴趣的:(java后台,nginx,运维,服务器,java)