• squid反向代理


    反向代理网站加速

     

    工作机制:

    缓存网页对象,减少重复请求
    将互联网请求轮训或按权重分配到内网Web服务器
    代理用户请求,避免用户直接访问Web服务器,提高安全

    Squid最典型的应用是代理局域网的机器联入互联网,它支持现在流行的网络协议。 Squid的另一项非常出色的功能就是实现反向代理功能。 五.使用Squid配置反向代理(HTTP 加速器) 通过squid配置反向代理主要就是配置“squid.conf”这个配置文件。 其它版本的在UNIX也同样适用。 在Linux中squid如果是以源代码方式安装的话,这个文件一般在“/usr/local/squid/etc/”目录下。 如果是系统自带的squid,一般配置文件在“/etc/squid/”目录下。 1. Squid反向代理单个后台WEB服务器 如果WEB服务器和反向代理服务器是两台单独的机器(一般的反向代理应该有两块网卡分别连接了内外部网络)。

    部署squid服务

    1.编译安装 Squid
    yum -y install gcc gcc-c++ make
    tar zxvf squid-3.5.28.tar.gz -C /opt/
    cd /opt/squid-3.5.28

    ./configure --prefix=/usr/local/squid \                #指定安装目录路径
    --sysconfdir=/etc \                                    #指定配置文件路径
    --enable-arp-acl \                                    #MAC地址管控,防止客户端使用IP欺骗
    --enable-linux-netfilter \                            #使用内核过滤
    --enable-linux-tproxy \                                #支持透明模式
    --enable-async-io=100 \                                #异步IO,提升存储性能
    --enable-err-language="Simplify_Chinese" \            #错误信息的显示语言
    --enable-underscore \                                #允许URL中有下划线
    --disable-poll \                                    #关闭默认使用 poll 模式
    --enable-epoll \                                    #开启epoll模式提升性能
    --enable-gnuregex                                    #使用GNU正则表达式
    ----------------------------------------------------------------------------------------------------------

     编译安装:

    1. ./configure --prefix=/usr/local/squid \
    2. --sysconfdir=/etc \
    3. --enable-arp-acl \
    4. --enable-linux-netfilter \
    5. --enable-linux-tproxy \
    6. --enable-async-io=100 \
    7. --enable-err-language="Simplify_Chinese" \
    8. --enable-underscore \
    9. --disable-poll \
    10. --enable-epoll \
    11. --enable-gnuregex
    12. make && make install
    13. ln -s /usr/local/squid/sbin/* /usr/local/sbin/
    14. useradd -M -s /sbin/nologin squid
    15. chown -R squid:squid /usr/local/squid/var/ #此目录用于存放缓存文件

    2.修改配置文件:

    vim /etc/squid.conf
    ......
    --56行--插入
    http_access allow all                #放在 http_access deny all 之前,允许任意客户机使用代理服务,控制规则自上而下匹配
    http_access deny all
    http_port 3128                        #用来指定代理服务监听的地址和端口(默认的端口号为 3128)
    --61行--插入
    cache_effective_user squid            #添加,指定程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功
    cache_effective_group squid            #添加,指定账号基本组

    -----------------------------------------------------------------------------------------

    coredump_dir /usr/local/squid/var/cache/squid        #指定缓存文件目录

    -60行--修改,插入
    http_port 192.168.6.156:80 accel vhost vport
    cache_peer 192.168.6.170 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
    cache_peer 192.168.6.169 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
    cache_peer_domain web1 web2 www.ko.com
    #表示对www.ko.com的请求,squid向192.168.6.169和192.168.6.170的80端口发出请求

     注解:

    http_port 80 accel vhost vport #squid从一个缓存变成了一个Web服务器反向代理加速模式,这个时候squid在80端口监听请求,同时和web server的请求端口(vhost vport)绑定,这个时候请求到了squid,squid是不用转发请求的,而是直接要么从缓存中拿数据要么向绑定的端口直接请求数据。
    accel :反向代理加速模式
    vhost :支持域名或主机名来表示代理节点
    vport :支持IP和端口来表示代理节点

    parent :代表为父节点,上下关系,非平级关系
    80 :代理内部web服务器的80端口
    0 :没有使用icp(电信运营商),表示就一台squid服务器
    no-query :不做查询操作,直接获取数据
    originserver :指定是源服务器
    round-robin :指定 squid 通过轮询方式将请求分发到其中一台父节点
    max_conn :指定最大连接数
    weight : 指定权重
    name :设置别名

    清空之前透明模式配置的 iptables 规则
    iptables -F
    iptables -t nat -F

    systemctl stop httpd       #防止 httpd 服务使用的 80 端口号和 squid 反向代理配置的监听端口冲突
    systemctl restart squid
     

    后端服务器设置:

    安装nginx  

    页面1:test web1

    页面2:test web2

    修改客户机主机映射

     www.ko.vom 192.168.6.156

    实验效果1:

    实验效果2

    通过刷新会实现轮询的效果,受缓存影响内容一直是web1 

     

     

  • 相关阅读:
    MacOS Pycharm ssh 免密码部署代码
    8、多进程之间的通信
    【LeetCode】102. 二叉树的层序遍历
    自学Python第十五天-爬虫解析工具 RE 、BS4 和 xpath
    多输入多输出 | MATLAB实现CNN-GRU-Attention卷积神经网络-门控循环单元结合SE注意力机制的多输入多输出预测
    for...in...与for..of...
    Netty的InboundHandler 和OutboundHandler
    rust 逐行读取文本文件
    Element组件案例 Vue路由 前端打包部署步骤
    神经是怎么传播信息的,神经网络的前向传播
  • 原文地址:https://blog.csdn.net/weixin_59629968/article/details/127678772