nginx做图片服务器的访问权限控制

一、针对单一图片的控制
若是图片按照哈希结构放置,那么用户的图片加锁后要把每一张图片都加上控制文件,若是该用户图片较多,写入时稍嫌多些。
好比有一张图:
/data/p_w_picpath/a/z/asdfqerqwegasd.jpg
写上一个空文件:
/data/p_w_picpath/a/z/asdfqerqwegasd.jpg.lock
而后在nginx配置判断:
location / {
root /data/p_w_picpath/;
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去填密码。
二、针对目录的控制
若是图片是按照目录放置,那么配置会稍微复杂一些。
location / {
root /data/p_w_picpath/;
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/p_w_picpath/a/z/lock
测试一下,效果不错,只要控制文件存在,访问马上403;删去控制文件,访问正常。
 
 
分享技术快乐自我
相关文章
相关标签/搜索