代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。 Squid是一个缓
存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据。当一个用户想要下载一
个主页时,可以向Squid 发出一个申请,要Squid 代替其进行下载,然后Squid 连接所申请网站并请
求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid 把保存
的备份立即传给用户,使用户觉得速度相当快。Squid 可以代理HTTP、FTP、GOPHER、SSL和WAIS等
协议并且Squid 可以自动地进行处理,可以根据自己的需要设置Squid,使之过滤掉不想要的东西。
按照代理类型的不同,可以将Squid 代理分为正向代理和反向代理,正向代理中,根据实现方式
的不同,又可以分为普通代理和透明代理。
普通代理:需要客户机在浏览器中指定代理服务器的地址、端口;
透明代理:适用于企业的网关主机(共享接入Internet)中,客户机不需要指定代理服务器地址、
端口等信息,代理服务器需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序
处理;
反向代理:是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务
器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器
对外就表现为一个服务器。
所谓正向代理模式,是指让用户通过Squid服务程序获取网站页面等资源,以及基于访问控制列表
(ACL)功能对用户访问网站行为进行限制,在具体的服务方式上又分为标准代理模式与透明代理模
式。标准正向代理模式是把网站数据缓存到服务器本地,提高数据资源被再次访问时的效率,但是
用户在上网时必须在浏览器等软件中填写代理服务器的IP地址与端口号信息,否则默认不使用代理
服务。而透明正向代理模式的作用与标准正向代理模式基本相同,区别是用户不需要手动指定代理
服务器的IP地址与端口号,所以这种代理服务对于用户来讲是相对透明的。
局域网内的主机如果想要访问外网,则必须要通过Squid服务器提供的代理才行,这样当Squid
服务器接收到用户的指令后会向外部发出请求,然后将接收到的数据交还给发出指令的那个用户,
从而实现了用户的代理上网需求。
使真机充当路由器
[root@foundation78 ~]# firewall-cmd --list-all
FirewallD is not running
[root@foundation78 ~]# systemctl stop libvirtd.service
[root@foundation78 ~]# systemctl start firewalld
[root@foundation78 ~]# systemctl start libvirtd.service
[root@foundation78 ~]# firewall-cmd --add-masquerade # 打开路由功能
success
使代理服务器上网
[root@squid ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 # 添加网关和DNS
DNS1=114.114.114.114
GATEWAY=172.25.254.78
[root@squid ~]# systemctl restart network
[root@squid ~]# route -n
[root@squid ~]# ping www.baidu.com
[root@squid ~]# yum install -y squid.x86_64
[root@squid ~]# vim /etc/squid/squid.conf
56 http_access allow all
59 http_port 3128
62 cache_dir ufs /var/spool/squid 100 16 256
ufs # 缓存数据的存储格式
/var/spool/squid # squid的cache存放路径
100 # cache目录容量(单位M)
16 # 一级缓存目录数量,默认是16
256 # 二级缓存目录数量,默认是256
[root@squid ~]# systemctl restart squid.service
[root@squid ~]# systemctl stop firewalld
打开客户端浏览器进行代理设置
[root@apache-server upload]# firefox & # 用命令的方式打开浏览器
测试:在网页上可以成功访问baidu,是因为有172.25.254.242这台主机做代理
但是在客户端主机上并不能ping通baidu,因为只在浏览器上做了代理
[root@apache-server upload]# ping www.baidu.com
ping: unknown host www.baidu.com
反向代理模式是指让多台节点主机反向缓存网站数据,从而加快用户访问速度。因为一般来讲,
网站中会普遍加载大量的文字、图片等静态资源,而且它们相对来说都是比较稳定的数据信息,当
用户发起网站页面中这些静态资源的访问请求时,我们可以使用Squid服务程序提供的反向代理模式
来进行响应。而且,如果反向代理服务器中恰巧已经有了用户要访问的静态资源,则直接将缓存的
这些静态资源发送给用户,这不仅可以加快用户的网站访问速度,还在一定程度上降低了网站服务器
的负载压力。
反向代理服务器会将缓存好的静态资源更快地交付给外网用户,从而加快了网站页面被用户访问
的速度。并且由于网站页面数据中的静态资源请求已被Squid服务器处理,因此网站服务器负责动态
数据查询就可以了,也进而降低了服务器机房中网站服务器的负载压力
[root@squid squid]# pwd
/var/spool/squid
[root@squid squid]# vim /etc/squid/squid.conf
59 http_port 80 vhost vport
vhost # 支持域名和主机名来代理节点
vport # 支持ip和端口来代理节点
60 cache_peer 172.25.254.142 parent 80 0 proxy-only
172.25.254.142 # web服务器的ip
parent # 上下级关系,非平级关系
80 # 代理web服务器的80端口
0 # 没有使用lcp,表示就一台squid服务器
proxy-only # 只做代理,降低主机负担
[root@squid squid]# systemctl restart squid.service
打开浏览器进行访问
[root@squid squid]# vim /etc/squid/squid.conf
59 http_port 80 vhost vport
60 cache_peer 172.25.254.142 parent 80 0 proxy-only name=web1 round-robin weight=2weight=2 # 权重,权重越大,说明这台proxy服务器越重要
61 cache_peer 172.25.254.134 parent 80 0 proxy-only name=web2 round-robin
round-robin # 轮询调度算法
name=web2 # 定义一个名字让后面的参数使用
62 cache_peer_domain web1 web2 www.westos.com # 将 www.westos.com 域名的请求通过 RR 轮询方式转发到2个父节点中的一个
[root@squid squid]# systemctl restart squid.service
浏览器测试,成功实现轮询,因为web1的权重为2,所以轮询时,web1要轮询2次,才会转到web2