1.什么是squid代理服务器?
- Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议
- 和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求
- Squid是一种用来缓冲Internet数据的软件,它是这样实现其功能的:接受来自人们需要下载的目标(object)的请求并适当地处理这些请求
- 也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面
- Squid随之连接到远程服务器(比如:http://squid.nlanr.net/)并向这个页面发出请求
- 然后,Squid显式地聚集数据到客户端机器,而且同时复制一份
- 当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上
- 当前的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议
- 但它不能处理如POP,NNTP,RealAudio以及其它类型的东西
2.squid正向代理服务器的实现(客户自己主动设定代理服务器的信息)
(1)实验背景
中国的客户端主机想要访问国外的某一台服务器主机,由于中国政府不允许存在这样的网络环境使中国主机直接访问国外服务器
但是香港的主机可以直接访问国外的主机,香港的主机其实也是一个客户端主机
现在中国的客户端主机可以通过香港这个客户端主机去间接访问国外的服务器
中国的主机去给香港的主机说自己想要什么,然后香港的主机去问国外的服务器要东西
香港的主机拿到东西之后,先给自己缓存一份,然后去给中国的主机
其实我和香港的都属于客户端,国外的属于被访问的
香港这台主机相当于代购,叫做squid代理服务器
我想访问国外的主机,不可以
但是香港的主机可以访问国外的主机
我去问香港的主机,香港的主机去问国外的
(2)实验步骤
先连wifi使自己的真机可以上网,可以ping通百度,ping www.baidu.com
开启防火墙
开启地址伪装功能
开启两台虚拟机并配置好网络及yum源
配置desktop主机的网络,并且使他可以通过真机上网
网关设置为我自己的真机ip
重启网络
查看网关
关掉防火墙之后再次测试,发现依然不通
因为我没有写域名解析
我的Desktop虚拟机是一个squid代理服务器
打开真机防火墙
配置server主机的网络,它不能上网,ping不通 www.baidu.com
接下来我将把desktop虚拟机当作一个squid代理服务器,让我的server虚拟机通过desktop虚拟机去使用真机的网关上网
真机相当于国外的一台服务器
desktop虚拟机相当于香港的一台客户端
server虚拟机相当于中国的一台客户端
操作都在desktop上面
先给Desktop配置本地yum源
完成之后,直接安装squid软件,把desktop主机当成一个代理服务器
systemctl start squid开启squid服务
systemctl enable squid设置squid服务是开机启动
netstat -antlupe | grep squid查看squid服务使用的端口号
vim /etc/squid/squid.conf编辑squid配置文件
允许别人把我当作代理服务器,缓存100M,要定期自动清理,16个一级目录,256个二级目录
修改前:
修改后:改为所有的http连接,开启squid服务的缓存功能,使自己作为代理服务器具有缓存能力,缓存大小是100M,有16个一级目录,256个二级目录
systemctl restart squid
切换到缓存目录下,进入00这个以及目录下,可以看出有很多二级目录
在server虚拟机这个客户端进行测试:此时依然ping不通百度
现在的server主机不能上网
在server的浏览器里面设置代理主机的信息,使它在依然ping不通百度的情况下,但是可以神奇的上网,哈哈哈
在浏览器里面加入代理服务器desktop的信息,172.25.254.111和 3128端口
server客户端通过desktop客户端的3128端口去问114要东西
选择编辑----->选择参数设置选项
选择高级选项----->选择网络选项并且进行设置
写入代理服务器ip地址和代理服务的端口
此时server虚拟机在ping不通 baidu的情况下通过squid代理服务器可以上网了
3. squid反向代理服务器的实现(企业服务器自己主动设定代理服务器的信息)
(1)实验背景
squid反向代理也叫做cdn加速,利用squid代理服务器,此时属于反向代理
什么是CDN?
CDN的全称是Content Delivery Network,即内容分发网络。
CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,
使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
西安的客户访问西安和深圳的服务器,哪个更快?客户访问西安的更快,因为路由转发个数少,客户直接访问深圳企业总部的服务器很慢 那么深圳的企业在西安放置一个代理服务器(这个服务器没有资源,有需要就去深圳服务器缓存,西安这个服务器就是squid反向代理) 西安的用户直接访问西安的服务器,西安的服务器没有数据,去深圳的缓存 使深圳的服务器压力变小,而且也可以提高信息传输的速率 cdn网络资源分发cdn加速
(2)实验规划
- 这个实验用三台主机
- 我的真机是西安的客户
- 我的server服务端虚拟机(desktop)是深圳的企业放在西安的代理服务器,上面没有资源
- 我的client客户端虚拟机(serevr)是深圳的服务器,上面有资源,有apache服务
- 西安的客户直接问西安的代理服务器,西安的代理服务器去深圳的服务器上面缓存资源
(3)实验步骤
设置squid反向代理服务器,相当于位于西安的反向代理服务器
直接查看有没有apache服务:rpm -qa | grep httpd 它没有apache,有squid服务
1. netstat -antlupe | grep 80这个代理服务器没有apache服务
2. vim /ect/squid/squid.conf编辑squid代理文件
3. cd /usr/share/doc/squid-3.3.8/
4. ls
5. less squid.conf.documentd在这个里面查看编写要求
6. 写入: http_port 80 vhost vport 利用80端口访问apache的资源
7. 写入apache的虚拟主机和虚拟端口 cache_peer 172.25.254.215 parent(父级) 80(apache服务) 0(此台代理服务器没有合作伙伴) proxy-only systemctl restart squid
我的dekstop虚拟机具有squid服务,是一个反向代理服务器,相当于深圳放在西安的代理服务器
可以看到西安的代理服务器没有apache服务
编辑squid代理服务的配置文件
让squid代理服务器开启http服务的虚拟端口80
重启squid服务
设置深圳企业的总服务器
yum install httpd安装apache服务
systemctl start httpd开启apache
systemctl stop firewalld关闭防火墙
cd /var/www/html
ls
vim index.html编辑发布文件
<h1>shenzhen's page</h1>
systemctl restart httpd重启apache服务
我已配置好yum源
给深圳的服务器安装apache服务
开启apache服务,关闭防火墙
切换到apache的默认目录下编辑默认发布文件,共享资源
编辑共享的内容
重启apache服务
设置西安客户的主机
在真机里面做解析:
vim /etc/hosts
172.25.254.215(写入代理服务器的ip)
在真机里面测试:
本地解析写215
vim /etc/hosts
172.25.254.215
我在真机ping www.westos.com(显示解析是由172.25.254.215给的)
或者在浏览器里面输入172.25.254.215直接可以看到172.25.254.115深圳服务器apache下面的东西,相当于西安的用户去访问西安的代理服务器
或者在浏览器直接输入172.25.254.115也可以,相当于西安的用户直接访问深圳的服务器
或者在浏览器直接输入www.westos.com也可以,看到的也是深圳的东西
因为www.westos.com对应172.25.254.215,215没有资源,215去问115要东西,因此直接显示115下面共享出来的东西
4.squid调度器的实现
(当企业中服务器的压力很大时,利用squid调度器来缓解负载均衡)
(1)实验背景
当多个客户访问一台服务器的时候,服务器压力很多,需要另外一台服务器来帮助它均衡一下
可是客户端只访问一个ip,两个服务端的ip不一样,怎样让客户毫无察觉的在两台服务器上面访问一个企业的同一个资源
这时候就需要一个squid调度器,当第一个客户访问时,去找apache1,当第二个客户来访问时,去找apache2
这个实验需要三台主机,两台apache主机,一台squid主机
(2)实验步骤
先重置我的两台虚拟机,并且配置网络,yum源,改主机名字
一个虚拟机是apache2(server虚拟机),一个是squid(desktop虚拟机)
真机是一个apache1
在apache1真机上面设置
把真机当作一个apache服务器,安装apache
切换到默认发布目录下
重启apache服务使共享目录下的资源共享出去
在浏览器里面输入apache1主机的ip看httpd服务是否配好
在server虚拟机apache2上面设置:
编辑server主机的默认发布目录
重启apache服务并关闭防火墙
在squid主机上设置:
yum install squid -y
vim /etc/squid/squid.conf
编辑调度器的配置文件
写入两个apache服务器信息
重启squid调度器服务
调度器没有apache,但是开启了80端口
测试:在哪测试就在哪做本地解析
我选择在真机测试:
写入调度器的ip
在浏览器中输入www.westos.com时,依次显示了apache1和apache2的默认发布内容
给定几率访问apache1,apache2
之前的访问时随机分配的,现在改变一下权重,apache2 : apache1 = 2 : 1
注意:实际在企业当中两个apache服务器共享的内容是一样的,做实验不一样是为了实验效果更明显
注意:这里的用户访问只能是通过域名访问,如果通过ip访问的话就没有通过调度器而是直接访问,没有起到负载均衡的作用