1.插话
Squid是什么?
Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器(比如:http://squid.nlanr.net/)并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。当前的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议。但它不能处理如POP,NNTP,RealAudio以及其它类型的东西。
2.Squid解析介绍
1)分类
正向解析和反向解析
2)相同点
访问走向:客户端 -> 代理服务器 ->真实服务器 ->代理服务器->客户端
3)不同点:
正向代理语义上更侧重于,客户端(A)让代理服务器(B)去帮忙访问某个网址。比如腾训QQ,新闻,体育,时尚等网站。
其特点是:
a、被访问的服务器(C)只知道是代理服务器(B)请求的,而不知道是你(A)请求的;
b、你(A)可以明确知道你要请求的真实服务器(C)
c、客户端(A)必须在浏览器设置代理服务器(B)的地址和端口。(设置之后,意思就是说只要在这个浏览器上输入的网址,统统都丢给代理服务器(B)去帮忙访问)
反向代理:客户端(A)只知道代理服务器(B)的地址,而不知道真实的服务器(C)的地址。客户端(A)只能被动的请求代理服务器(B),在由代理服务器去访问真实的服务器(C)。
其特点是:
a、客户端(A)请求一个地址(比如代理服务器(B)的地址),它并不知道这个地址是代理服务器(B)的地址还是真实的地址(C)
b、真实的地址(C)是由代理服务器(B)决定的。假设代理服务器(B)的地址为www.B.com,它配置的是代理到haha,那你看到的内容就是haha;改天它配置成了hehe,你一样输入www.B.com,看到的内容却是hehe。这些都不是客户端(A)能决定的。
c、客户端(A)不需要在浏览器设置代理服务器(B)。
4)总结
正向代理,其真实服务器对客户端是明确的。你只是借助代理服务器让它帮忙去请求你想访问的那个地址。
一般的应用场景是:公司内部人员的计算机网络一般是私网,但是,为了公司人员可以访问到外网,只需要有一台计算机可以连到外网,那么,就可以将这台计算机作为代理服务器进行正向解析。
反向代理,其真实服务器对客户端是透明的。你永远不知道代理服务器访问的地址是代理服务器还是真实服务器。就比如直接访问www.baidu.com,有可能地方代理服务器内才能中没有这个数据,那么,他就要去真实服务器去获取,而他获取的速度远远小于客户机自己获取花费的时间,从而在某种意义上实现加速。
一般的应用场景是:大型公司为了会在全国各地安放代理服务器,一方面为了缓解总部服务器的访问压力,另一方面进行地方性解析速度更快,会少很多经过路由的过程,并且公司的服务器的传输速度差不多都是几千兆,我们平时用的网一般也就几十兆,就不得了了。
3.Squid的实现
1)正向解析
step1:
需要三台计算机:
【C】:客户机
【S】:代理服务器
【R】:真实服务器
step2:
配置各台主机的网络信息:
【C】:添加一块网卡,设置IP为:172.25.8.208
【S】:添加两块网卡,设置IP分别为:172.25.8.108和172.25.254.108
【R】:添加一块网卡,设置IP为:172.25.254.8
其中,172.25.8.0/24为私有网段,172.25.254.0/24为公有网段
在这里,我们将自己的主机作为【R】,安装两台虚拟机分别作为【C】【S】
step3:
将Squid服务在【S】这台虚拟机上进行搭建:
yum install squid -y
通过查看squid的配置文件可知,其开放的网络端口为:3128
vim /etc/squid/squid.conf
vim /etc/squid/squid.conf ##修改配置文件中56行和66行
systemctl start squid ##开启squid服务
cd /var/spool/squid
ls
##可以看到生成了很多的目录,而这些目录存在的意义就是高速缓存
step4
在客户端【C】中的浏览器上进行代理服务器的添加:
firefox ##进入到浏览器中直接编辑修改
##Edit --> Preferences --> Advanced --> Network --> Settings --> Manual proxy configuration
##在Manual proxy configuration中填写:
HTTP Proxy:172.25.8.108 ##代理服务器中可以连接公网的IP
Port:3128 ##代理服务器网络端口
step5
最后一次检查防火墙是否关闭,SELinux是否停止工作,squid服务是否开启
一切准备就绪的情况下,在【R】真实服务器中,在Apache的默认发布目录下,编辑文件index.html,然后,先在【S】代理服务器端进行测试,如果,可以正确访问,再继续在【C】客户端进行访问
【S】端,Apache默认发布文件的内容
【S】代理服务器端 访问【R】真实服务器的Apache时,显示为【R】真实服务器的Apache的默认发布文件则正确,即访问成功!
最后,在【C】端直接访问【R】端的Apache
正向解析成功~
1)反向解析
与正向解析不同的是,反向解析访问的网络端口是80,因此,在正向解析的基础上,我们需要改变【S】端squid的配置文件以及【C】端浏览器的文件的http端口
【S】端:vim /etc/squid/squid.conf ##将squid的端口由3128改为80
【C】端:firefox