- 用referer,但是referer可能會被僞造,仍讓能訪問。
location ~.*\.(gif|jpg|png|flv|swf|rar|zip)$
{
valid_referers none blocked imooc.com *.imooc.com;
if($invalid_referer)
{
#return 403;
rewrite ^/http://www.imooc.com/403.jpg;
}
}
- 用簽名的方式(這是第三方的模塊,需要安裝纔可以在nginx中配置)
location ~.*\(gif|jpg|jpeg|png|bmp|swf)$
{
accesskey on; #打開簽名應用
accesskey_hashmethod md5; #加密方式可以用md5或sha-1
accesskey_arg sign; #get參數名稱
accesskey_signature "test$remote_addr"; #加密規則:任意字母加服務器IP
}
在php中訪問圖片的時候需要加上加密後的字符,如下:
//變量sign必需要和nginx配置中的變量名一致否則nginx獲得不到相應的變量,從而導致簽名失敗。
$sign = md5('test'.$_SERVERE['REMOTE_ADDR']));
echo '<img src="./logo_new.png?sign='.$sign.'">';