使用nginx中auth_request進行鑑權
使用背景
由於項目中有這樣的需求
對訪問靜態文件的路徑進行鑑權
舉例:瀏覽器訪問 xxx.com/userId/a.png
這時候我們要對路徑中userId進行鑑權,確認這個userId是否有權限訪問這個a.png 可能描述有點偏差 準確點描述應該是瀏覽器當前登錄的用戶是否和這個url的userId是否一致,總感覺還是不對 但應該差不多這個需求把
配置
話不多說直接上配置,不能理解的地方我都寫了備註應該都看得懂,不做過多解釋
#/userId/a.png
location ~/(.*)/(.*){
auth_request /app/api/auth;
#這裏的$1 $2分別代表被正則匹配的內容
#$1 = userId
#$2 = a.png
set $auth_request_uri "http://127.0.0.1:9999/app/api/auth/$1/$2";
alias d:/web/$2;
}
location = /app/api/auth {
internal;
proxy_pass $auth_request_uri;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
補充
nginx 會對auth_request_uri 返回的狀態碼做判斷200 , 401 ,403 所以後續還要對401、403做處理