nginx作圖片服務器的訪問權限控制

1、針對單一圖片的控制
如果圖片按照哈希結構放置,那麼用戶的圖片加鎖後要把每一張圖片都加上控制文件,如果該用戶圖片較多,寫入時稍嫌多些。
比如有一張圖:
/data/image/a/z/asdfqerqwegasd.jpg
寫上一個空文件:
/data/image/a/z/asdfqerqwegasd.jpg.lock
然後在nginx配置判斷:
location / {
root /data/image/;
if ( -f “${request_filename}.lock” )
{
#rewrite ^(.*)$ http://www.sudone.com/access.jsp?url=$1 last;
return 403;#test
}
}
這樣,只要在圖片旁邊有一個.lock文件,就會訪問到403 Forbidden;使用rewrite會將圖片鏈接和cookie定位到後端,由後端返回判定結果X-Accel-Redirect頭或者重定向到另外一個jsp去填密碼。
2、針對目錄的控制
如果圖片是按照目錄放置,那麼配置會稍微複雜一些。
location / {
root /data/image/;
if ( $request_filename ~ ^(.*)/[^/]*$ ){
set $dir $1;
}
if ( -f “${dir}/lock” )
{
#rewrite ^(.*)$ http://www.sudone.com/access.jsp?url=$1 last;
return 403;#test
}
}
首先用正則表達式取出圖片路徑的目錄,然後帶上控制文件名判斷此文件是否存在,這樣只要在圖片的目錄中放置一個名叫lock的空文件就能控制完整個目錄:
/data/image/a/z/lock
測試一下,效果不錯,只要控制文件存在,訪問立刻403;刪去控制文件,訪問正常。
 
 
分享技術快樂自我
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章