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

道阻且长,行则将至!加油! --不是冷漠
原文地址:https://www.cnblogs.com/bushilengmo/p/13903338.html