美文网首页
Squid服务搭建

Squid服务搭建

作者: 薛琛 | 来源:发表于2020-02-16 15:37 被阅读0次
    图片来自网络

    一、简介

    Squid 是一个 Web 缓存代理,支持 HTTP, HTTPS, FTP, 以及更多。它通过缓存与重用经常请求的web页面,减少带宽使用同时提升了响应时间。Squid 具有可扩展的访问控制功能,同时可以使服务器加速。Squid总共有三种模式,分别是传统模式、透明模式、反向代理。

    二、缓存服务器的工作原理

    通过代理服务器访问外部网站,开启缓存池,缓存了部分的静态页面,如果下一个客户再来访问,代理服务器会去真是服务器核实页面是否更新了,然后决定是否更新缓存池,然后返回给客户。如果是全新页面,代理服务器会去真实服务器读取数据返回给客户。

    架构图(来自网络)

    三、实验环境

    本实验共准备三台(CentOS 7.6)。
    记得关闭三台服务的防火墙和SElinux。

    1)传统模式的搭建

    a.ip配置
    客户端ip:192.168.80.10,Squid服务器有两块网卡,对应的ip分别是:内:192.168.80.20,外:192.168.90.20,web服务器则是192.168.90.30
    b.我们先搭建并启动web服务器,我们选择Apache

    yum -y install httpd
    systemctl start httpd
    echo "This is a web server" > /var/www/html/index.html
    

    c.测试


    image.png

    d.客户端搭建
    由于传统模式要在浏览器中配置代理,因此我们实现准备一台装有桌面的CentOS。


    image.png

    e.Squid的配置与启动

    yum -y install squid
    systemctl start squid
    

    查看是否启动


    image.png

    由于squid要接收来自客户端的数据包,并转发给真正的web服务器,因此要开启路由转发功能

     echo 1 > /proc/sys/net/ipv4/ip_forward
    

    f.最终测试
    从客户端的浏览器访问


    image.png

    查看web服务器的访问日志


    image.png
    可以看到都是由squid服务器来访问的。最后,我们也可以将web服务器关闭,再在client上测试,同样也能访问到网页。

    2)透明模式的搭建

    由于传统模式要在客户端的浏览器上设置代理,比较麻烦。因此有了透明模式。
    透明模式则不需要再浏览器上设置,client直接访问即可。
    a.client的设置
    由于我们这边没有路由器,因此我们指定client的网关为squid的ip地址,这样在client访问web会先将数据包发送给squid内网,再由squid服务器将其请求转发给web服务器。

    echo "GATEWAY=192.168.80.20" >> /etc/sysconfig/network-scripts/ifcfg-ens33
    

    重启网卡
    查看是否设置成功


    image.png

    b.squid服务器的配置
    修改配置文件

    vim /etc/squid/squid.conf
    

    修改http_port为
    http_port 192.168.80.20:3128 transparent (transparent为透明的意思),重启服务

    同样,该服务器的路由转发功能也要打开。

    c.防火墙的配置
    Centos 7.x中没有iptables工具,用yum下载

    yum -y install iptables-services
    

    首先要清空防火墙的规则

    iptables -F
    

    添加一条规则

    iptables -t nat -A PREROUTING -i ens33 -s 192.168.80.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128
    

    这条规则的意思是:当入站网卡是ens33,内网网段是192.168.80.0段,并且访问的是80端口,那么则将该请求的端口重定向到3128端口。

    保存配置

    service iptables save
    

    启动iptables

    systemctl start iptables
    

    查看

     iptables -t nat -L
    
    image.png

    d.client测试


    image.png

    关闭apache服务,依然能够获取到网页。

    f.添加其他的功能
    如果想要限制squid代理的文件大小,可以在配置文件中添加
    reply_body_max_size 10 MB
    意思是:允许代理的最大文件大小为10 MB,超过10 MB不被允许访问。
    测试:
    向apache的根目录下写入一个11MB的文件

     dd if=/dev/zero of=/var/www/html/test.txt bs=11M count=1
    

    客户端测试


    image.png

    提示文件太大,代理服务器不能够缓存。

    3)反向代理

    Squid能够作为反向代理服务器,这点有点类似于Nginx。但Squid只能支持轮询的方式,并且没有健康检查。
    a.ip配置
    192.168.80.10客户端ip,192.168.90.20192.168.80.20是Squid服务器的内网外网ip,192.168.90.30192.168.90.40分别hi两台后端服务器。
    b.Squid服务器的搭建
    修改配置文件

    vim /etc/squid/squid.conf
    
    image.png
    跟之前不一样的是,这边的http_port必须要写外网的ip,因为是公网来访问。
    c.测试
    在客户端多测试几次,结果:
    image.png
    image.png
    d.注意点
    配置反向代理最主要的部分就是配置文件中的:
    aclhttp_access,前者是确定范围,后者是允许该网段的范围通过。我们的实验没有配置,是因为在配置文件中事先已经有了该配置。 image.png image.png

    相关文章

      网友评论

          本文标题:Squid服务搭建

          本文链接:https://www.haomeiwen.com/subject/rbspfhtx.html