做网站的,谁愿意自己辛辛苦苦的成果就被别人轻松转载,如果是文字的,一般也就禁鼠标右键,再没什么好办法(当然,名人好打官司另说),但如果是图片,影音的文件,大可以利用http协议的header信息进行控制,这就是大多数web服务器日志要记录的referer。 公司新进一测试客户,就要求CDN方配合做防盗链。
公司自然有规范,直接ctrl+c、ctrl+v就搞定。但这些句子,还是值得细细研究一下的。 相关语句如下:
acl test_domain dstdomain .test.com
acl null_referer referer_regex .
acl right_referer referer_regex -i ^http://test.com ^http://.*.test.com
http_access allow test_domain !null_referer
http_access deny test_domain !right_referer
第一关键点,是第一行的那个“.”,“.”匹配的是除了“n”以外的任何一个字符。那么!null_referer也就是“n”,也就是说第一条access定义的,是允许referer为空行;
第二关键点,是access的“!”,“!”就是非,那么!right_referer定义的就是一切除了test.com以外的域名,也就是说第二条access定义的,是不允许所有其他网站。
这样的结果,也就是只有从test自己的网站,或者直接在浏览器地址栏里输入完整url,才能看到文件(linux上常用的wget、curl,默认的referer也是空,所以也可以。我又试试迅雷,其referer也是空,那么估计下载工具也都是这样)
(比较奇怪的一点是:squid的日志里,空不显示为“ ”,而是“-”,很能迷惑人呀!)
于是我想到新浪和百度呀这些博客之间转来转去的图片,一般都显示一个空图,但点开来(或许还要再刷一次)也一样能看。可见防盗链都是这么做的。
如果真就狠到了连直接url查看也不让,那就把null_referer的定义删除掉,自然也就可以了……
试到这里,发现另一个问题:nagios的监控,一般也是空referer的,如果真这么狠的要求,这个监控也得改了。 因为不管是curl还是wget,都可以伪装referer。 两个的伪装语法分别是: curl -e “http://www.test.com” -x $squidip:80 http://www.test.com/test.gif wget http://www.test.com/test.gif –refer=”http://www.test.com” -e “http_proxy=$squidip”
我对nagios不熟,不知道里面具体是用什么去check的,大概也差不离吧? 最后,像新浪百度这样的盗链显示图片怎么做的?也就是一句话的事,如下:
deny_info http://www.test.com/你盗链啦.gif
right_referer
用过Apache的朋友都知道mod_rewrite可以用来进行处理防盗链,Lighttpd也有同样的功能,而且总的来说, lighttpd.conf配置文件比httpd.conf更简单明了。 原来一直使用Apache来处理防盗链,今天修改了服务器上Lighttpd的配置,直接实现了防盗链,下面是防盗链部分的代码。
$HTTP["referer"] !~ "^($|http://.*/.(toplee/.com|8zone/.cn))" {
$HTTP["url"] =~ "/.(jpg|jpeg|png|gif|rar|zip|mp3)$" {
url.redirect = (".*" => "http://www.toplee.com/blog/")
}
}
相关推荐
学习心得,分享出来供大家学习。docker镜像构建,中间件mysql、lighttpd、Nginx、squid配置和启动、dubbo服务部署
9. **缓存防盗链**:防止外部站点盗用内部网络的资源,Squid可以设置防盗链规则,确保只有内部网络用户才能访问特定的资源。 10. **高速缓存协议**:Squid支持HTTP/1.1和HTTP/2协议,同时,它还支持ICP(Internet ...
4. **安全特性**:lighttpd提供了多种安全机制,包括HTTP基本认证、访问控制列表、防盗链等,保障了服务器的安全运行。 5. **快速响应**:lighttpd的反应速度极快,得益于其优化的事件驱动模型,可以迅速处理请求,...
默认情况下,该值被设置为 0KB,意味着 squid 不会限制请求体的大小。但是,这可能会导致服务器在处理大文件时出现问题。因此,通常需要根据实际需求来调整这个值。 **配置示例**: ```squid request_body_max_size...
2. **基本配置**:修改Squid的基本设置,如监听端口、缓存大小、缓存策略等。这使得无需直接编辑`squid.conf`文件就能调整关键性能参数。 3. **访问控制**:定义访问规则,如允许或阻止特定的IP地址、域名或URL。这...
编辑Squid配置文件`/etc/squid/squid.conf`,添加透明代理设置。确保开启`transparent_proxy`选项,并配置监听端口和网关: ```conf http_port 3128 transparent acl localnet src 0.0.0.0/0 # 用你的网络范围替换 ...
Squid Cache_mem 大小设置 Squid 代理服务器是一种流行的开源代理服务器软件,广泛应用于 Unix、Linux 等操作系统中。本文档将详细介绍如何设置 Squid Cache_mem 大小,以提高代理服务器的性能。 设置 Squid Cache...
2. 配置 Squid:编辑 `squid.conf` 文件,开启正向代理功能,设置监听端口(如 3128),并定义允许访问的IP范围。 3. 访问控制:为了安全,可以设置访问控制列表(ACL)以限制只有特定的客户端可以使用此代理。 4. ...
Squid提供了多种缓存策略,如基于内容类型、URL路径、域名的缓存策略,以及TTL(Time To Live)设置,以控制缓存资源的有效期限。同时,Squid还支持自动清理过期和无用的缓存文件,保持存储空间的合理利用。 Squid...
4. **访问控制**:Squid可以设置访问控制列表(ACL),限制或允许特定用户或IP地址访问特定的网络资源,实现网络安全和管理。 5. **内容过滤**:Squid可以通过配置规则,对特定类型的内容(如图片、视频、特定网站...
1. **检查缓存目录的权限设置**:确保 Squid 服务运行时所用的用户(默认是 `squid` 用户)具有对缓存目录的读写权限。 2. **修改缓存目录的属主和属组**:如果缓存目录的权限配置不当,可以使用 `chown` 命令修改属...
**Squid配置实用教程** Squid是一款广泛使用的开源代理...总结,Squid的配置涉及到多个方面,包括基本设置、缓存策略、安全过滤和监控。理解并灵活运用这些配置项,能够帮助你构建一个高效、安全的代理服务器环境。
- **缓存内存大小**:`cache_mem 64 MB`,设置 Squid 使用的物理内存大小。 - **最大对象大小**:`maximum_object_size 4096 KB`,限制缓存中单个对象的最大尺寸。 - **下载文件大小限制**:`reply_body_max_size ...
《Squid代理服务器详解与应用》 Squid是一个广泛应用的开源代理服务器,其最新版本为3.5.28。在互联网访问控制、内容缓存和性能优化等方面,...在实际应用中,应结合具体需求进行个性化设置,以充分发挥Squid的潜力。
8.Squid.conf 配置说明Squid.conf的配置项很多,例如`cache_dir`定义缓存存储位置,`http_access`控制访问策略,`refresh_pattern`设置缓存更新规则等。详细解释需要查阅官方文档。 9.Squid 命中率分析Squid的命中...
《Squidb:深入解析与学习指南》 Squidb,作为一款开源的数据库管理系统,被广泛应用于Android和iOS平台,为开发者提供了一种高效、灵活的方式来管理应用程序的数据。在我们的压缩包"**squidb.zip**"中,包含了一份...
安装后,需要编辑配置文件 `squid.conf`,设置监听端口、访问控制、缓存大小等参数。 3. **访问控制**:通过 `acl`(Access Control List)规则,你可以限制或允许特定 IP 地址、子网或用户组访问 Squid 代理。这有...
2. **内容过滤**:Squid可以设置规则来限制或阻止特定类型的网络流量,如广告、恶意软件或非工作相关的网站,这对于企业网络管理和家庭网络安全非常有用。 3. **访问控制**:通过配置访问控制列表(ACL),Squid...
- **透明代理**:通过配置网络设备,可以让 Squid 作为透明代理,用户无需修改浏览器设置即可使用。 通过以上步骤,你已经成功配置了 Squid 作为缓存服务器。但要记住,持续监控和优化是关键,以确保最佳性能和安全...