本文共 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/