squid代理缓存服务器
Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。
squid服务器到底是用来干什么的呢?
简单来说squid服务器就是帮助客户主机去获取客户主机想要获取的intetnet上的信息,只不过因为很多限制,客户主机无法直接获取,需要由squid去访问,然后缓存信息,最后由客户主机去浏览缓存,类似于现实生活中的代购。
squid代理缓存服务器的功能有正向代理,反向代理(cdn高速缓存),做调度器,那么我们接下来就对这三个功能做更加详细的说明与实验
正向代理
正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性(由mod_cache提供)减少网络使用率。
实验:
我们来模拟一个正向代理的过程,假设我们有两台主机,其中一台主机可上网,另一台主机则不可以,我们以www.baidu.com作为原始服务器,最终只要能够再不能上网的主机上通过代理服务器(能上网)可以访问百度,则代表实验成功
1.设置代理服务器(可上网)的网络配置,确保其可以正常访问百度
由于我们的代理服务器是虚拟机,我们需要通过配置网关来上网,这个在前面的文章中有提到过,就不做说明了。
做dns解析vim /etc/resolv.conf
真机打开火墙伪装
ping百度
2.代理服务器安装squid并对其进行配置
查询squid的配置文件路径
最终找到其配置文件所在路径为/etc/squid.squid.conf
vim /etc/squid/squid.conf
57 http_access allow all ##允许所有人连接
58 # Squid normally listens to port 3128
59 http_port 3128 ##端口
60
61 # Uncomment and adjust the following to add a disk cache directory.
62 cache_dir ufs /var/spool/squid 100 16 256 ##缓存目录共100M 分为16个目录,每个目录100个子目录
启动squid服务
2.客户主机(不能上网)主机进入浏览器去设置代理
edit
preferences
advnced
network
settings
manual。。。 第一个打勾,填入代理主机(79)和squid端口号(3128)
测试:通过客户机去访问百度
通过对比发现通过代理却是可以访问百度
这这里再向大家说明一下,squid的配置文件说明是不能通过man5来查看的,其配置文件说明在/usr/share/doc/squid-3.3.8/squid.conf.documented
反向代理(cdn加速,高速缓存)
和正向代理不同的是反向代理客户主机不需要做任何配置,代理服务器和原始服务器都是由企业来做的,通过代理服务器的高速缓存,客户主机通过http的80端口访问代理主机,而代理主机则使用vpn建立专用通道来缓存原始主机信息,这样客户主机就好像是直接访问了原始主机一样,加快了访问速度
实验:
这个实验我们和正向代理不同,我们需要将刚才的代理主机作为目标主机,客户主机作为代理主机,真机作为客户主机
客户主机和代理主机由于属于同一网段,可直接通讯,类似于httpd的80端口,而我们的代理主机和目标主机都要安装squid,使目标主机和代理主机之间形成一种“父子”关系,使用squid打开80端口进行通信,类似于架构了一个vpn通道
目标主机:
开启httpd服务,开启squid服务,关闭火墙,然后什么都不用设置,只要客户主机能用apache访问即可
代理主机:(不开启httpd服务)
安装squid
配置squid文件
vim /etc/squid/squid.conf
55 # And finally deny all other access to this proxy
56 http_access allow all
57
58 # Squid normally listens to port 3128
59 http_port 80 vhost vport ##开启apache的80端口,虚拟主机,虚拟端口
60 cache_peer 172.25.254.79 parent 80 0 proxy-only ##父级端口80,0是备用的,这里没有所以是0,只做代理
61
62 # Uncomment and adjust the following to add a disk cache directory.
63 cache_dir ufs /var/spool/squid 100 16 256
然后打开squid服务
测试:
真机通过查看代理主机的apache默认发布文件
目标主机的默认发布文件内容:
查看:
成功,因为99没有打开httpd服务,按原理来说通过apache不会看到任何东西,然而我们却看到了79的发布文件,则反向代理成功
squid做调度器
squid还可以作为调度器去调度不同的主机
代理主机:
vim /etc/squid/squid.conf
56 http_access allow all
57
58 # Squid normally listens to port 3128
59 http_port 80 vhost vport
60 cache_peer 172.25.254.79 parent 80 0 proxy-only name=web1 originserver round-robin weight=2
61 cache_peer 172.25.254.109 parent 80 0 proxy-only name=web2 originserver round-robin
62 cache_peer_domain web1 web2 www.ljz.com
63 # Uncomment and adjust the following to add a disk cache directory.
64 cache_dir ufs /var/spool/squid 100 16 256
所添加的参数意义
round—robin | 轮询调度 |
originserver | 核服务器,有这个参数才能识别轮询调度所维护的域名 |
weight=x | 重量级,也就是访问x次然后轮转,为1默认不用写 |
web1 | 调度的主机之一 |
web2 | 调度的另一个主机 |
cache_peer_domain | 两台主机访问的域名 |
测试,用客户主机(真机)去访问www.ljz.com
以上是我三次访问www.ljz.com的结果,符合weight次数,也做到了调度,成功!