一、实验环境(rhel7.0版本)
主机环境:rhel7.0
各主机信息
主机名 | IP |
---|---|
server | 172.25.254.1 |
desktop | 172.25.254.2 |
物理机 | 172.25.254.7 |
二、Squid代理
Squid代理服务器是一种缓存服务器,一般分为正向代理和反向代理。
正向代理的过程隐藏了真实的请求客户端,服务器不知道真实的客户端是谁,客户端请求的服务被代理服务器代替请求。我们经常所说的代理就是正向代理,正向代理代理的是请求方,也就是客户端。
反向代理的过程隐藏了真实的服务器,客户不知道真正提供服务的人是谁,客户端请求的服务都被代理服务器处理。反向代理代理的是响应方,也就是服务端。
三、正向代理(客户端不能访问Apache,Squid服务端可以访问Apache(可以是访问别的Apache服务器,也可以是访问百度的Apache服务器:如果是访问百度的Apache服务器,那么必须可以连外网。这里以访问百度的Apache服务器为例))
客户端因为网络或者其他的问题,不能访问到一台Apache服务器,如果要访问到,则需要通过一台中间的代理服务器,这就是Squid的正向代理。
Squid代理服务器可以访问到这个Apache服务器,并且缓存访问到的内容,再将缓存的内容给客户端看。
1、前期准备:
(1)配置环境:
两台虚拟机:一个为server虚拟机;另外一个是desktop虚拟机。server虚拟机(服务端)可以访问到百度的Apache(即,必须可以上网),且可以连接到desktop虚拟机。desktop虚拟机(客户端)只能连接到server虚拟机,不能访问到百度的Apache。
【1】、配置server虚拟机
【2】、配置desktop虚拟机
- desktop虚拟机不可以连外网
(2)Squid 服务端(server 虚拟机)安装Squid服务
本文中的Squid代理服务器为server虚拟机,以使用"yum install squid -y"装好Squid服务,为了方便,直接关闭防火墙。或者对防火墙进行设置(因为防火墙能够添加的服务中没有squid服务,所以添加squid服务对应的端口3128端口。)
对防火墙进行设置
2、正向代理服务器的配置如下:
(1)Squid 服务端——172.25.254.1:
编辑Squid的配置文件"/etc/squid/squid.conf",
- 将第56行的"deny"改为"allow"。
- 将第62行的注释去掉(需要注意的是:62也可以不注释,不注释只是影响,重启squid服务之后,不会在/var/spool/squid目录中生成相应的文件。)。完成后重启服务。(没有重启服务之前,"/var/spool/squid"目录中,是没有内容的;重启之后,"/var/spool/squid"目录中会生成相应的内容:一共16个目录,每个目录里有256个文件)。
- 其中ufs表示:缓存数据的存储格式;/var/spool/squid是:squid的cache存放目录;100表示:cache目录容量(单位M);16表示一级缓存目录数量;256表示二级缓存目录数量。
- 可以看到squid服务的端口为3128
(2)Squid 客户端——172.25.254.2:
在客户端打开浏览器"firefox",点击左上角的"Edit"下的"Perferences",点击最后的"Advanced"下 的"Network",在"Connetion"后点击"Settings"。按照下图输入IP和端口号,IP是Squid服务器的 IP,端口号是3128。
必须选中Use this proxy server for all protocols这一项
3、测试
完成上述配置后,在desktop虚拟机客户端的浏览器中重新输入"www.baidu.com",就可以看到这个网页了。但是,访问的不是真实的网页,而是172.25.254.1这台主机的缓存。
此时desktop仍然是ping不同baidu的网址的。
正向代理客户端访问的是Squid服务器的缓存,适用于客户端不能直接访问目标主页,需要一个中间服务器Squid。
四、反向代理(Squid服务端没有Apache,而客户端通过Apache访问服务端的IP)
注意:只针对Apache的默认侦听端口(80端口)
反向代理是客户端访问的目标是Squid服务器,Squid服务器通过访问有Apache的主机并缓存其网页内容,再反馈给客户端,客户端看到的依旧是 Squid服务器的缓存,但是与正向代理不同的是,反向代理中客户端并不知道有Apache主机的存在,而直接访问Squid服务器,而且客户端不需要自己进行设置。反向代理通常用于Apache的访问加速和减小Apache主机的访问压力。
1、前期准备
(1)
在desktop虚拟机(客户端):打开浏览器,关闭网络代理:Edit—>Preferences–>Advanced–>Network–>Settings–>No Proxy
(2)Squid服务端:关闭Apache服务
(3)
Squid服务端(server虚拟机):IP为172.25.254.1,没有Apache
客户端(desktop虚拟机):IP为172.25.254.2,没有Apache(为了做下一个实验,安装Apache服务,并且开启Apache服务)
真机:IP为172.25.254.7,有Apache
2、反向代理服务器的配置如下:
实验一:访问IP,域名均可
服务端——172.25.254.1
编辑配置文件"/etc/squid/squid.conf",
- 将第59行的"3128"改为"80",并在后面加 上"vhost vport",
- 在第60行添加"cache_peer 172.25.254.7 parent 80 0 proxy-only"。完成后重启"squid"服务。(这个内容的写法需要看帮助文档)
并重启 squid 服务。
- 其中60行是指:通过80端口访问172.25.254.7主机上的内容;
- cache_peer:做反向代理的关键字;
- 172.25.254.7:代表后台真正的web服务器;
- parent:代理服务器的类型。有parent和slibing两种(parent代表父亲;slibing代表兄弟伙伴);
- proxy-only:代表只做代理;
客户端——172.25.254.2:
反向代理不需要在客户端进行配置。
在客户端进行测试:
需要注意的是Squid服务器上并没有Apache。
完成上述配置后,在客户端的浏览器中,直接输入要访问的Squid服务器"172.25.254.1",则可以看到Apache主机"172.25.254.7"的主页。
1、访问IP
2、访问域名
在客户端编辑本地解析文件,该IP是Sqiud服务端的IP,而不是Apache主机的IP
实验二:访问IP,域名均可。
服务端——172.25.254.1:
该实验同实验一的步骤相同:差别就在于squid服务端配置文件的编辑的内容不同,编辑内容如下(59行-61行)
- round-robin:表示轮询
- weight=2:代表权重(2次)。该参数,做轮询时使用。此处的weight参数可以不加,不加此参数时,表示每个IP轮询1次
客户端——172.25.254.2:
反向代理不需要在客户端进行配置。
在客户端进行测试:
编辑本地解析文件,该IP是sqiud服务端的IP,而不是apache主机的IP
1、访问IP:
第一次:
刷新一次:
再刷新一次:
2、访问域名:
第一次:
刷新一次:
再刷新一次:
注意:
当Squid服务端中写了下面的62行时:只能做到访问域名server.xin.com时实现轮询,做不到访问IP时轮询。
五、CDN的简介
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。