当前位置: 首页 > news >正文

nginx根据访问的url参数或者是请求 头部做判断转发

在http请求后端时,token是一种非常常见的使用方式,但是如果url请求参数不带token,或者请求头部不带token这样的请求应当直接返回401,而不要代理给后端服务器做处理了。可以有效降低后台服务器的负载。

location /api/ {
        add_header 'Access-Control-Allow-Origin' '*'; 
        add_header 'Access-Control-Allow-Credentials' 'true'; 
        add_header 'Access-Control-Allow-Headers' 'Content-Type, x-csrf-token, X-Access-Token, Accept';
        add_header 'Access-Control-Allow-Methods' 'GET,HEAD,PUT,POST,DELETE,PATCH';
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Nginx-Proxy true;
        if ($arg_token = '') {
         #return 401;
         set $token  para; 
        }
        if ($http_token = '') {
            #return 401;
             set $token  "${token}header"; 
        }
         if ($token = paraheader){
         return 401;
         }
         
        proxy_pass http://127.0.0.1:8080/app/;
        proxy_redirect off;
        }

简要说明if ($arg_token = '')表参数中没有名为token的参数,  if ($http_token = '')表示没有token这个请求头。

特别注意if is evil,nginx不提供多if判断,没有or这样的判断,所以只能用上文这种方式。

相关文章:

  • Spark源码分析 -- TaskScheduler
  • BZOJ 1974 [Sdoi2010] auction 代码拍卖会(数位dp)
  • Java中单例设计模式之最佳实践举例
  • Redkale 入门教程 01 -- Hello Word!
  • iOS sqlite 使用事务操作数据库
  • 【队列】【P2827】【NOIP2016D2T3】蚯蚓
  • java中Xml、json之间的相互转换
  • 新概念书店无非内容电商线下变体,西西弗终难逃被资本吞并命运?
  • android应用activity中调出输入法后界面调整问题的解决
  • watch深度监测
  • PHP-学习大规模高并发Web系统架构及开发推荐书籍
  • [caffe(二)]Python加载训练caffe模型并进行测试1
  • 【转】ini载入保存类,操作INI配置文件方便的很
  • PostgreSQL 连接的问题
  • 珍爱之礼 美妙感受
  • angular2开源库收集
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • CSS实用技巧干货
  • ECMAScript6(0):ES6简明参考手册
  • ECS应用管理最佳实践
  • input的行数自动增减
  • Java 网络编程(2):UDP 的使用
  • java8 Stream Pipelines 浅析
  • Javascripit类型转换比较那点事儿,双等号(==)
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Otto开发初探——微服务依赖管理新利器
  • Phpstorm怎样批量删除空行?
  • python学习笔记 - ThreadLocal
  • SpiderData 2019年2月16日 DApp数据排行榜
  • 从PHP迁移至Golang - 基础篇
  • 分享一份非常强势的Android面试题
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 少走弯路,给Java 1~5 年程序员的建议
  • 我感觉这是史上最牛的防sql注入方法类
  • 移动端解决方案学习记录
  • Prometheus VS InfluxDB
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​什么是bug?bug的源头在哪里?
  • # .NET Framework中使用命名管道进行进程间通信
  • #android不同版本废弃api,新api。
  • $.each()与$(selector).each()
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转)h264中avc和flv数据的解析
  • (转)Sql Server 保留几位小数的两种做法
  • (转)项目管理杂谈-我所期望的新人
  • ***利用Ms05002溢出找“肉鸡
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET/C# 使窗口永不获得焦点
  • .net开发引用程序集提示没有强名称的解决办法