squid是什么?
缓存服务器,
即用来存储(内存及硬盘)用户访问的
网页、图片、文件
等等信息的专用服务器,这种服务器不仅可以使用户最快的得到他们想要的信息,而且大大减少了网络传输的数据量,缓存服务器经常是代理服务器。对于用户是不可见。
squid概述:
squid是一款缓存internet数据的软件,它接收用户的下载申请,并自动处理所下载的数据。
也就是说,当一个用户象要访问一个url时,它向squid发出一个申请,请求squid替它下载,然后squid连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,squid将缓存的该页面立即传给用户,加速用户的访问
。
squid 可以代理HTTP, FTP, GOPHER, SSL 和 WAIS 协议,
暂不能代理POP, NNTP等协议。
squid主要功能
- 缓存网站内容,以达到为用户提供Web访问加速。
- 对用户的Web访问进行过滤控制
- 热点缓存,只缓存访问热度到达设定级别的网站内容。
- 合并回源,多个相同的请求只回源一次。
- ACL访问控制,可针对源IP、目的地IP、域名、URL、访问时间、单一最大连接数限制访问行为。或通过外部程序验证访问者(proxy_auth)。
- 网页内容篡改,可根据需求篡改网站内容。
- 网站头部篡改,可根据需求篡改请求头部。
- 可针对不同的域名或url配置不同的缓存规则。
工作流程
当代理服务器中有客户端需要的数据时:
- 客户端向代理服务器发送数据请求;
- 代理服务器检查自己的数据缓存;
- 代理服务器在缓存中找到了用户想要的数据,取出数据;
- 代理服务器将从缓存中取得的数据返回给客户端。
当代理服务器中没有客户端需要的数据时:
- 客户端向代理服务器发送数据请求;
- 代理服务器检查自己的数据缓存;
- 代理服务器在缓存中没有找到用户想要的数据;
- 代理服务器向Internet 上的远端服务器发送数据请求;
- 远端服务器响应,返回相应的数据;
- 代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。
三种代理服务器原理
标准的代理缓冲服务器
前提条件:
必须在每一个内部主机的浏览器上
明确指名代理服务器的IP地址和端口号
。
工作流程:
1.客户端上网时,每次都把请求发送给代理服务器处理,代理服务器根据请求确定是否连接到远程web服务器获取数据。
2.如果在本地缓冲区有目标文件,则直接将文件传给用户即可。
3.如果没有的话则先取回文件,先在本地保存一份缓冲,然后将文件发送给客户端浏览器。
透明代理缓冲服务器
与标准代理服务器区别
透明代理缓冲服务器和标准代理服务器的功能完全相同。但是,代理操作对客户端的浏览器是透明的(
即不需指明代理服务器的IP和端口
),对于linux操作系统来说,透明代理
使用Iptables或者Ipchains实现
。因此不需要对浏览器作任何设置,。
工作流程:
透明代理服务器阻断网络通信,并且过滤出访问外部的HTTP(80端口)流量。如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,如果在本地没有缓冲则向远程web服务器发出请求,其余操作和标准的代理服务器完全相同。
反向代理缓冲器
以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从内部服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外表现为一个服务器。
作用:
1.可以
降低原始WEB服务器的负载
。
2.反向代理服务器
承担了对原始WEB服务器的静态页面的请求,防止原始服务器过载
。
3.它位于WEB服务器和Internet之间,阻止了WEB服务器和Internet的直接通信
。
工作流程:
- 如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。
- 如果没有缓冲则先向WEB服务器发出请求,取回数据,本地缓存后再发给用户。
应用场景
正向代理(本地网关)
a、正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。
b、正向代理还可以使用缓存特性减少网络使用率。
c、正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。
透明代理(cdn,架设于网络运营商主干机房)
a、提高各个地区访问者的访问速度。
b、减少源站压力。
c、减少网络运营商的网间结算费用。
d、节省网络运营商带宽资源。
反向代理(网站前端)
a、降低源站服务器的负载。
b、隐藏源站真实ip。
squid主要组成部分
服务名:squid
主程序:/usr/sbin/squid
配置目录:/etc/squid
主配置文件:/etc/squid/squid.conf
监听tcp端口号:3128
默认访问日志文件:/var/log/squid/access.log