Squid原理及三种代理模式

前言

在TCP/IP网络中,传统的通信过程是客户端向服务器请求数据,服务器响应该请求,将数据传送给客户端。在引入了代理服务器以后,这一 过程变成客户端向服务器发起请求,该请求被送到代理服务器,代理服务器分析该请求,先查看自己缓存中是否有请求数据,如果有就直接传送给客户端, 如果没有就代替客户端向目标服务器发出请求。服务器响应以后,代理服务器将响应的数据传送给客户端,同时在自己的缓存中保留一份该数据的拷贝。这样,再有客 户端请求相同的数据时,代理服务器就可以直接将数据传送给客户端,而不需要再向该服务器发起请求。
传统代理:适用于Internet,需明确指定服务端。
透明代理:适用于共享上网网关,不需指定服务端。
反向代理:位于网站前端,代理web服务器接受客户端的请求。

Squid简介

Squid cache(简称为Squid)是流行最广的,使用最普遍的开源缓存代理服务器。Squid服务程序具有配置简单、效率高、功能丰富等特点,它能支持HTTP、FTP、SSL等多种协议的数据缓存,可以基于访问控制列表(ACL)和访问权限列表(ARL)执行内容过滤与权限管理功能,还可以基于多种条件禁止用户访问存在威胁或不适宜的网站资源,因此可以保护企业内网的安全,提升用户的网络体验,帮助节省网络带宽。当 Squid启动以后,它可以派生出预先指定数目的dnsserver进程,而每一个dnsserver进程都可以执行单独的DNS查询,这样一来就大大减 少了服务器等待DNS查询的时间。
由于缓存代理服务不但会消耗服务器较多的CPU计算性能、内存以及硬盘等硬件资源,同时还需要较大的网络带宽来保障数据的传输效率,由此会造成较大的网络带宽开销,因此国内很多IDC或CDN服务提供商会将缓存代理节点服务器放置在二三线城市以降低运营成本。

1、定义

Squid是一款缓存服务器的守护进程。

2、Squid缓存实现策略

磁盘==>分区==>目录==>object(缓存文件命名为object对象)
索引方式:
Hash Tables 目录 每个Digest的索引信息
Digest Tables 索引 不同分区对应的Object大概说明
提示:在分区的时候,会使用UFS(Unix File System)进行格式化,由于该文件系统比较老,重启squid时,会初始化缓存目录,使用UFS文件系统写入文件,所以重启非常慢。

3、Squid原理

在这里插入图片描述
Squid服务程序会按照收到的用户请求向网站源服务器请求页面、图片等所需的数据,并将服务器返回的数据存储在运行Squid服务程序的服务器磁盘上。当有用户再请求相同的数据时,则可以直接将存储服务器本地磁盘中的数据交付给用户,这样不仅减少了用户的等待时间,还缓解了网站服务器的负载压力。

4、Squid的作用

  • 通过缓存增加访问速度 ;
  • 提供用私有IP访问Internet的方法;
  • 设置访问控制策略,控制用户的上网行为,提高网络的安全性 。
    关于安全:内部用户访问Internet都是通过代理服务器,代理服务器就成为进入Internet的唯一通道;反过来说,代理服务器也是Internet访问内部网的唯一通道,整个内部网只有代理服务器是可见 的,从而大大增强了网络的安全性。

5、CDN 内容分发网络

作用:将源站的压力分散到其他节点,主要体现在数据缓存服务和DNS智能解析,squid是CDN最常用的实现方案。
1)提供缓存服务的软件
Squid:使用最多,诞生的较早,用硬盘来缓存,功能比较全面,并发能力较强。
Varnish:一款新的软件。把内存当做硬盘使用来缓存,速度更快,还可以使用正则表达式来删除缓存,Varnish在小文件读写方面超过squid,大文件支持能力差,但静态资源大多数都是大文件。
Nginx:本身开放了很多接口,允许我们自由的开发一些组件去实现多种功能。可以使用第三方组件让nginx实现缓存服务器的功能。不得不提一下,官方对nginx的定义是一个支持反向代理的web服务器,所以在缓存领域使用较少。
2) DNS智能解析
根据用户访问地址来源来分摊压力,将压力分配至用户所在地就近的节点。bind 9.0以上版本软件直接提供view功能,根据不同的客户端地址返回不同的解析结果。

6、squid的三种类型的代理服务器

传统代理:适用于Internet,需明确指定服务端。
在这里插入图片描述
透明代理:适用于共享上网网关,不需指定服务端。
在这里插入图片描述
正向代理的过程基础上隐藏了真实的请求客户端,服务器不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替请求。我们常说的代理也就是正向代理,正向代理代理的是请求方,也就是客户端。

反向代理:位于网站前端,代理web接受客户端的请求。
在这里插入图片描述
反向代理的过程隐藏了真实的服务器,客户不知道真正提供服务的人是谁,客户端请求的服务都被代理服务器处理。反向代理代理的是响应方,也就是服务端。

总结:
1)正向代理和透明代理中的代理服务器和客户端同属一个LAN(局域网),对server端是透明的,服务器并不知道自己为谁提供服务。作用都是让内网用户可以通过代理服务器上互联网,也可以提高访问速度,并且可以通过代理服务器的访问控制限制内网用户的上网行为。
2)反向代理的过程隐藏了真正的服务器,对client端是透明的,客户端并不知道真正提供服务的服务器。可以起到负载均衡的作用,提高用户的访问速度。
3)两者的区别在于代理的对象不一样:正向代理代理的对象是客户端,反向代理代理的对象是服务端
4)应用场景 :
正向和透明代理:一般用于公司内网用户访问互联网,根据需求进行访问控制;
反向代理:一般用于公司服务器集群前做web缓存,提高用户访问效率,同时可以起到负载均衡作用,为互联网提供可持续的web服务。

7、Squid访问控制列表

由定义acl的范围和通过 http_access 允许或拒绝定义的范围。
ACL( Access Control List ,访问控制列表):
根据源地址、目标URL、文件类型等定义列表
acl 列表名称 列表类型 列表内容 …
针对已定义的acl列表进行限制
http_access allow或deny 列表名称 …

总结:
如果只定义了 acl 范围不做 http_access 动作,那么默认 allow。
如果只定义了 acl 范围不做 http_access 动作,并且关闭了 http_access deny all,那么当前的 acl 范围会根据当前配置文件中最后一行 http_access 做反向操作。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值