Linux squid 反向代理中防盗链
squid图片防盗链的配置如下:
pics urlpath_regex -i \.(gif|jpg|jpeg|bmp|png)$ /* 匹配是否是图片 */
acl domain_refer referer_regex -i domain /* 匹配允许的域名关键字 */
acl notnull_refer referer_regex . /* 匹配非空referer */
http_access allow pics !notnull_refer /* 允许空referer访问图片 */
http_access deny pics !domain_refer /* 拒绝其他域名调用图片 */
deny_info http://www.domain.com/logo.gif domain_refer /* 有盗链的,显示我们的
logo*/
有了Varnish防盗链,自然也要有Squid的防盗链。原理都一样,对Referer进行判断,当然网上有所谓的终极解决方案还对cookies进行 判断的,这里还是只讨论Referer这种。在Squid里就是在配置文件添加acl控制,在squid.conf中的acl段添加如下配置:
acl has_referer referer_regex .
acl allow_referer referer_regex -i baidu\.com
acl allow_referer referer_regex -i google\.com
acl allow_referer referer_regex -i yahoo\.cn
acl allow_referer referer_regex -i google\.cn
http_access allow !has_referer
http_access deny !allow_referer
deny_info http://img1.test.com/images/noposter.jpg allow_referer
解释一下,has_referer匹配Referer存在,然后利用!has_referer来匹配没有Referer即直接访问的请求,这部分请求不予 做防盗链处理,allow。allow_referer即允许使用源站资源的网站,然后利用!allow_referer来匹配不在允许列表的网站,这些 不允许的Referer过来的请求就返回deny_info的内容
- 最新评论