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 . '"';

浙公网安备 33010602011771号