nginx根據訪問的url參數或者是請求 頭部作判斷轉發

在http請求後端時,token是一種很是常見的使用方式,可是若是url請求參數不帶token,或者請求頭部不帶token這樣的請求應當直接返回401,而不要代理給後端服務器作處理了。能夠有效下降後臺服務器的負載。nginx

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這個請求頭。api

特別注意if is evil,nginx不提供多if判斷,沒有or這樣的判斷,因此只能用上文這種方式。服務器

相關文章
相關標籤/搜索