zoukankan      html  css  js  c++  java
  • 部署Squid传统代理

    一、squid代理服务概述

    1.1 概述

    Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。

    1.2 工作机制

    • 缓存网页对象,减少重复请求

    • 它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求

    • 也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器(比如:http://squid.nlanr.net/)并向这个页面发出请求

    • 然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。

    1.3 代理的基本类型

    • 传统代理:适用于lnternet,需要明确指定服务器

    • 透明代理:客户机不需要指定代理服务的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理

    二、传统代理案例

    2.1 环境

    名称角色地址
    centos-7 squit 20.0.0.45
    centos-7 web 20.0.0.46
    centos-7 客户机 20.0.0.55

    2.2 安装squid服务

    #解压到opt目录
    tar zxvf squid-3.4.6.tar.gz -C /opt
    
    #安装编译工具
    yum -y install gcc gcc-c++
    
    #configure配置
    cd /opt/squid-3.4.6
    
    ./configure --prefix=/usr/local/squid      //安装路径
    --sysconfdir=/etc                          //配置文件目录
    --enable-arp-acl                            //支持acl访问控制列表
    --enable-linux-netfilter                      //内核过滤
    --enable-linux-tproxy                          //透明代理功能模块
    --enable-async-io=100                        //io对于io的优化
    --enable-err-language="Simplify_Chinses"      //err-language 报错信息设置为中文
    --enable-poll                                    //关闭默认使用poll模式,开启epoll模式提提升性能
    --enable-gnuregex                               //支持正则表达式
    --enable-underscore                             //允许URL支持下划线
    
    #编译及安装
    make && make install
    
    #路径优化,便于系统管理
    [root@squid squid-3.4.6]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/
    
    #创建squid程序性用户
    [root@squid squid-3.4.6]# useradd -M -s /sbin/nologin squid
    

    2.3 修改squid配置文件

    [root@squid squid-3.4.6]# vim /etc/squid.conf 
    http_access allow all   '//56行添加此项,表示允许所有IP访问'
    #http_access deny all     '//原有的注释掉'
    
    # Squid normally listens to port 3128
    http_port 3128
    cache_effective_user squid   '//添加指定用户squid'
    cache_effective_group squid     '//添加指定组 squid'
    [root@squid squid-3.4.6]# squid -k parse    '//检查语法,没问题可Ctrl + C组合键取消'
    [root@squid squid-3.4.6]# squid -z    '//初始化缓存目录'
    [root@squid squid-3.4.6]# squid    '//启动服务'
    [root@squid squid-3.4.6]# netstat -ntap |grep 3128    '//检测是否启动成功'

    2.4 创建systemctl启动脚本

    [root@squid squid-3.4.6]# cd /etc/init.d/
    
    #!/bin/bash
    #chkconfig: 2345 90 25
    PID="/usr/local/squid/var/run/squid.pid"
    CONF="/etc/squid.conf"
    CMD="/usr/local/squid/sbin/squid"
    
    case "$1" in
      start)
        netstat -natp | grep squid &> /dev/null
        if [ $? -eq 0 ]
        then
          echo "squid is running"
          else
          echo "正在启动 squid..."
          $CMD
        fi
      ;;
      stop)
        $CMD -k kill &> /dev/null
        rm -rf $PID &> /dev/null
      ;;
      status)
        [ -f $PID ] &> /dev/null
          if [ $? -eq 0 ]
          then
            netstat -natp | grep squid
          else
          
          
    #增加执行权限
    [root@squid init.d]# chmod +x squid 
    
    #添加到squid服务
    [root@squid init.d]# chkconfig --add squid   //添加到service
    
    #设置开机启动
    [root@squid init.d]# chkconfig --level 35 squid on  //'设置35级别开机自启动'

    2.5 设置缓存参数

    [root@squid init.d]# vim /etc/squid.conf
    
    http_port 3128      '//下面添加'      
    cache_mem 64 MB                      //缓存64M的内容
    reply_body_max_size 10 MB            //禁止下载的超过10MB的文件
    maximum_object_size 4096 KB          //超过4MB:的文件不进行缓存

    2.6 防火墙设置

    [root@squid init.d]# iptables -F
    [root@squid init.d]# setenforce 0
    [root@squid init.d]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
    
    #重载服务
    [root@squid init.d]# service squid reload
    
    [root@squid init.d]# netstat -ntap | grep 3128
    tcp6       0      0 :::3128                 :::*                    LISTEN      119829/(squi:d-1) 

    2.7 配置web服务端

    [root@web ~]# yum install httpd -y    '//安装httpd服务'
    [root@web ~]# systemctl stop firewalld.service     '//关闭防火墙'
    [root@web ~]# setenforce 0
    [root@web ~]# systemctl start httpd.service     '//开启httpd服务'

    2.8 在客户端上配置

    2.9 在client客户端测试web网页

    道阻且长,行则将至!加油! --不是冷漠
  • 相关阅读:
    js对象数组(JSON) 根据某个共同字段 分组
    一个 函数 用来转化esSearch 的range 条件
    关于 vuex 报错 Do not mutate vuex store state outside mutation handlers.
    android listview 重用view导致的选择混乱问题
    android SDK和ADT的更新
    Android中adb push和adb install的使用区别
    pycharm中添加扩展工具pylint
    su Authentication failure解决
    Putty以及adb网络调试
    有关android源码编译的几个问题
  • 原文地址:https://www.cnblogs.com/bushilengmo/p/13903338.html
Copyright © 2011-2022 走看看