博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx根据访问的url参数或者是请求 头部做判断转发
阅读量:6534 次
发布时间:2019-06-24

本文共 922 字,大约阅读时间需要 3 分钟。

在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这样的判断,所以只能用上文这种方式。

转载地址:http://ggzdo.baihongyu.com/

你可能感兴趣的文章
fedora17升级到fedora18
查看>>
单例模式(Singleton)
查看>>
函数指针和指针函数
查看>>
Python的函数参数传递:传值?引用?
查看>>
[转]分享2011年8个最新的jQuery Mobile在线教程
查看>>
android call require api level
查看>>
Mac下android环境搭建
查看>>
创建Visual Studio项目模版向导的几篇参考文章
查看>>
深入浅出SQL Server Replication第一篇:走近Replication(上)
查看>>
[TopCoder][SRM] SRM 562 DIV 2
查看>>
SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第一篇)
查看>>
LocalAlloc,VirtualAlloc,malloc,new的异同
查看>>
回调函数
查看>>
win7 x64 jdk1.7.0_51
查看>>
linux中利用iptables+geoip过滤指定IP
查看>>
在myeclipse中写sql语句的细节问题
查看>>
使用ShellExecute打开目标文件所在文件夹并选中目标文件
查看>>
HDU 4614 Vases and Flowers (2013多校2 1004 线段树)
查看>>
Minix中的字符判定ctype.c
查看>>
91平台iOS接入demo
查看>>