欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > Nginx代理秒加auth认证,安全升级超简单

Nginx代理秒加auth认证,安全升级超简单

2025/6/10 9:25:15 来源:https://blog.csdn.net/qq_32419139/article/details/148419648  浏览:    关键词:Nginx代理秒加auth认证,安全升级超简单

文章目录

  • 前言
  • 一、nginx 校验 auth_request
  • 二、使用步骤
    • 1.安装nginx
    • 2.配置代理验证
  • 总结


前言

由于大多数前后端分离项目都需要nginx做代理,所以nginx 的应用非常广泛,然而有时候,我们为了集成第三方的门户,以及用户验证,不得不需要通过nginx 做一层包装,假装是一个整体,然后为了尽量减少代码改动,所以需要在nginx层做代理的时候,需要进行转发前的token 用户信息校验。

校验流程


一、nginx 校验 auth_request

nginx 是通过 auth_request 实现用户校验的

我们通过源码的方式安装nginx,然后加入auth 模块的支持

二、使用步骤

1.安装nginx

具体安装可以参考: nginx安装

其中 --with-http_auth_request_module 就是加入auth的模块支持,这样就ok了。

2.配置代理验证

配置思路如下:

  1. 所有请求去掉代理前缀 /api
  2. 获取请求中的携带的token(请求头、拼接)
  3. 根据auth_reqeust 验证token合法性
  4. 判断合法性。合法继续代理,不合法直接返回错误,不再继续代理改请求
 server {listen       8080;server_name  localhost;location / {root   html;index  index.html index.html;try_files $uri $uri/ /index.html; # 刷新页面404 处理}location /api/ {# $arg_token获取拼接参数token, $token赋值给临时变量 tokenset $token $arg_token;auth_request /auth;# 通过/auth 验证后如果状态码是约定的错误如402 500 等,自定义返回错误error_page 402 500 = @error401;# 转发原始请求到后端服务proxy_pass http://127.0.0.1:8080/;}# 认证子请求location = /auth {# 内部请求internal;# 构造 POST 请求发送给认证服务proxy_pass http://127.0.0.1:8080/user/token; # 替换为实际的验证 URLproxy_method POST;proxy_pass_request_body off;proxy_set_header Content-Length "";proxy_set_header X-Original-URI $request_uri;proxy_set_header token $token;  # 传递token# $http_authorization不通过拼参方式,而是通过从请求头中获取authorization# proxy_set_header Authorization $http_authorization;  # 传递Token到鉴权服务}# 自定义返回错误信息 或者 错误页面location @error401 {add_header Set-Cookie "NSREDIRECT=$scheme://$http_host$request_uri;Path=/";return 424 "token expired";#  return 302 http://127.0.0.1:8080/index;}}

总结

这样就通过了auth_request对转发的请求做了用户认证,有利于做门户网站的集成,以及增加了安全性;

重点来了!!!
如果不是第一次安装,而是第二次编译(已经是启动状态), 光重启是没用的,必须关掉nginx 然后启动

./nginx -s stop
./nginx

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词