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网页

    道阻且长,行则将至!加油! --不是冷漠
  • 相关阅读:
    CSS笔记
    WebStorm快捷键
    单例模式详解
    JS正则表达式
    Java NIO 详解(二)
    Java NIO 详解(一)
    【Java并发编程】之十六:深入Java内存模型——happen-before规则及其对DCL的分析(含代码)
    Go 普通LOG输出
    Go TCP网路程序编写
    Go 语言官方包函数中文翻译
  • 原文地址:https://www.cnblogs.com/bushilengmo/p/13903338.html
Copyright © 2011-2022 走看看