squid缓存代理

1、缓存服务器介绍


  • 缓存服务器(英文意思cache server),即用来存储(介质为内存及硬盘)用户访问的网页,图片,文件等等信息的专用服务器。这种服务器不仅可以使用户可以最快的得到他们想要的信息,而且可以大大减少服务端网络传输的数据量。缓存服务器往往也是代理服务器。对于网站的用户来说,缓存服务器和代理是不可见的,即在用户看来所有的网站信息都来自其正在访问的网站,而实际上可能是缓存服务器在提供访问数据。
  • 目前国内互联网公司常用的缓存服务器有:squid,varnish(几乎绝迹),nginx,ats。
  • squid作为缓存和代理服务器的历史十分的悠久,本章我们主要讲述squid服务,尽管不少人谈及其他软件的缓存机制比squid如何优异,但我们还是要首先掌握这个老牌的开源cache软件,因为它经历的历程实在是太悠久了,等大家掌握了squid服务后,其他的软件就不在话下了。如果再有时间,可以测试下varnish,nginx,squid三者之间的性能对比,而不是轻易的听信于他人的说法,别人说好,只能代表他个人的观点,我们自己用事实证明,才是学习和工作的真谛。
  • 国内基本上90%以上的商业CDN公司,象国内的CDN基本都在用squid,象蓝汛,网宿,帝联,sina在用ats。
    Squid官方:http://www.squid-cache.org/

2、squid服务介绍


  • Squid是一个高性能的代理缓存服务器,Squid支持FTP,gopher和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的,非模块化的,I/O驱动的进程来处理所有的客户端请求。
  • Squid将数据元缓存在内存和硬盘中,同时也缓存DNS查询的结果。Squid支持SSL,支持访问控制。由于使用了ICP(轻量Internet缓存协议),Squid能够实现层叠的代理阵列,从而最大限度的节约带宽。
  • Squid Cache(简称Squid)是一个流行的代理服务武器和Web缓存服务器软件。Squid服务有相当多的用途:
  1. 用于放置在Web服务器的前面,缓存网站Web服务器的相关数据,这样用户请求缓存服务器就可以直接返回数据给用户了,从而提升了用户的访问网站体验,从另一方面也减轻了Web服务器,数据库服务器,图片文件存储服务器等业务服务器的压力。这种应用被称之为反向代理服务。
  2. 用于放置在企业内部关键出网位置或者某些共享网络的前端,缓存内部上网用户的数据,域名系统和其他网络搜索数据等,这样用户上网请求的数据,就可以由缓存服务器返回给内部用户,而不需要上网了,从而使得内部用户上网更快,更安全,也会大大节约公司的带宽。这种应用被称之为正向代理服务(普通代理或者透明代理)。
  3. 通过放在网络的关键位置过滤网络流量和访问数据,提升整个网络安全。例如:可以监控及限制内部企业员工的上网行为,可以和iptables配合作为办公网的网关。
  4. 用作局域网通过代理上网,只要是一台可以上网的机器就可以,位置随便,让所有的用户的浏览器设置这个服务器代理上网即可。

Squid代理服务器主要用于类Unix系统中运行,其发展历史相当悠久,功能也相当完善。除了对HTTP支持的很好外,对于FTP与HTTPS的支持也相当好,在3.0测试版中也支持了IPv6,Squid的主页在http://www.squid-cache.org。目前业界主流CDN都是基于Squid进行二次开发作为cache缓存服务器的。

2.1传统代理服务原理

squid缓存代理

传统的代理服务器就是通过浏览器设置代理的方法:设置代理服务器的IP地址与监听端口号。

流程说明:

客户端去访问网站,先到squid代理服务器,squid代理服务器会查看有没有相关数据,有的话直接到缓存中去拿取数据返回给客户端;如果没有的话,会直接把请求交给web服务器去处理,web服务器收到请求后,把数据返回给squid代理服务器,squid把数据返回给客户端,同时备份一份数据到自身缓存中。

2.2透明代理服务原理

squid缓存代理

所谓透明代理,是相对于代理服务器而言,客户端不需要做任何和代理服务器相关的设置和操作,对用户而言,感觉不到代理服务器的存在,所以称之为透明代理。相当于把代理服务器部署在核心的上网出口,当用户上网浏览页面时,会交给代理服务器向外请求,结合iptables可以实现代理+网关+内容过滤+流量安全控制等完整的上网解决方案。

流程说明:

当客户端1发送访问请求到防火墙,防火墙会把该用户的请求转发给squid,squid会先检查自身缓存有无相关数据,有的话返回给客户1,如果没有的话,请求web服务器,获取用户的访问内容,放回给用户端,同时自己备份一份数据到自身的缓存中;当客户端2访问和客户端1一样的请求时,由防火墙把请求z'f转发给squid,squid检查自身缓存中有同样的内容,直接将该内容返回给用户。

2.3反向代理服务原理

squid缓存代理

普通代理方式是代理内部网络用户访问internet上服务器的连接请求,客户端必须指定代理服务器,并将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理。反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从内部服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

流程说明:

squid作为反向代理服务器,通常的话工作在一个服务器群集的前端,在用户看来,squid服务器就是他要访问的服务器,而实际意义上squid只是接受了用户发来的请求,并把请求提交给内网真正的web服务器去处理,如果squid自身缓存中有用户所要的数据,会直接将数据返回给用户,起到缓存数据的作用,同时减轻后端服务器的压力。

网站在什么时候就会用squid?

静态抗不住了,想节省带宽,又想节省成本,又想提高访问速度。

总结:

  • 正向代理和透明代理中的代理服务器和客户端同属一个局域网,对server端是透明的,服务器并不知道自己为谁提供服务。作用都是让内网用户可以通过代理服务器上互联网,也可以提高访问速度,并且可以通过代理服务器的访问控制限制内网用户的上网行为。
  • 反向代理的过程隐藏了真实的服务器,对客户端是透明的,客户端并不知道真正提供访问的服务器。可以起到负载均衡端作用,提高用户的访问速度。
  • 两者的区别在于代理的对象不一样,正向代理代理的对象是客户端,反向代理代理的对象是服务端
  • 应用场景

正向和透明代理:一般用于公司内网用户访问互联网,根据需求进行访问控制

反向代理:一般用于公司服务器集群前做web缓存,提高用户访问效率,同时可以起到负责均衡作用,为互联网提供可持续端web服务。