Nginx如做图片防盗链

Nginx防盗链

第一种方法是利用Referer头来判断是否是合法请求

location ~* \.(gif|jpg|png|swf|flv)$ { 
  valid_referers none blocked www.xxx.com xxx.com ; 
  if ($invalid_referer) { 
    #return 403;  #直接提示拒绝访问
    rewrite ^/ http://www.xxx.com/xxx.jpg;  #返回特定的图片
  } 
}

#none意为不存在的Referer头。

#blocked意为根据防火墙伪装Referer头,如:“Referer: XXXXXXX”。

第二种方式就是利用ngx_http_accesskey_module模块,当然需要确保此模块开启

location ~* \.(gif|jpg|png|swf|flv)$ { 
  accesskey on;
  accesskey_hashmethod md5;
  accesskey_arg "sign";
  accesskey_signature "privateString$remote_addr";
}

#accesskey为模块开关;

#accesskey_hashmethod为加密方式,MD5或者SHA-1;

#accesskey_arg为url中的验证参数;

#accesskey_signature为加密串,例子中是由任意字符串privateString + 客户端IP组成。

以下为PHP代码例子简单的实现

<?php 
$sign= md5("privateString".$_SERVER['REMOTE_ADDR']);
echo '<img src="http://www.xxx.com/images/xxx.jpg?sign=' . $sign . '"';
posted @ 2020-11-18 14:29  小菜鸟之路  阅读(276)  评论(0)    收藏  举报