• 一、缓存代理概述
    • 1. Web代理的工作机制
    • 2.代理的基本类型
    • 3.使用代理的好处
  • 二、squid传统模式
    • 【squid服务器】
    • 1.设置主机名
    • 2.编译安装squid
    • 3.优化路径
    • 4.创建squid程序用户,并改变目录下文件属性
    • 5.修改squid配置
    • 6.开启服务
    • 7.设置系统服务项
    • 8.传统代理服务器需要配置的选项
    • 9.放通防火墙规则
    • 【Web服务器】
    • 1.安装Apache服务
    • 【客户端浏览器访问】访问验证
    • 1.直接访问Apache http://192.168.10.20
    • 2.指定代理服务器后再次访问Apache
    • 3.查看web服务器的访问日志
  • 三、squid透明模式
    • Squid透明模式挂载原理
    • 1.实验拓扑
    • 2.配置双网卡
    • 3.设置路由转发
    • 4.修改squid.conf配置
    • 5.配置iptables转发规则
    • 6.在Web服务器端配置静态回程路由
    • 7.客户端(20.0.0.30)访问web服务器(192.168.10.20)测试
    • 8.查看Apache访问日志

一、缓存代理概述

官方地址:http://www.squid-cache.org/
软件下载地址:http://www.squid-cache.org/Versions/

1. Web代理的工作机制

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

2.代理的基本类型

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

3.使用代理的好处

  • 提高Web访问速度
  • 隐藏客户机的真实IP地址

二、squid传统模式

实验设计:一台squid代理服务器,一台Web服务器,一台Client端
实验拓扑:

【squid服务器】

1.设置主机名

[root@localhost~]# hostnamectl set-hostname squid
[root@localhost~]# su

2.编译安装squid

[root@squid~]# yum install gcc gcc-c++ -y
[root@squid~]# tar zxvf squid-3.4.6.tar.gz -C /opt
[root@squid~]# cd /opt/squid-3.4.6/
[root@squidsquid-3.4.6]# ./configure \
--prefix=/usr/local/squid \          ##安装路径
--sysconfdir=/etc \                   ##配置文件目录
--enable-arp-acl \                 ##支持acl访问控制列表
--enable-linux-netfilter \             ##支持网络筛选
--enable-linux-tproxy \            ##支持透明
--enable-async-io=100 \               ## I/O优化
--enable-err-language="Simplify_Chinese" \   ##报错显示简体中文
--enable-underscore \                ##支持下划线
--enable-poll \             ##关闭默认使用poll模式,开启epoll模式提提升性能
--enable-gnuregex           ##支持正则表达
[root@squid squid-3.4.6]# make -j3 && make install

3.优化路径

[root@squid squid-3.4.6]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/    ##创建命令软连接,方便系统识别'

4.创建squid程序用户,并改变目录下文件属性

[root@squid squid-3.4.6]# useradd -M -s /sbin/nologin squid ##创建系统用户
[root@squid squid-3.4.6]# chown -R squid.squid /usr/local/squid/var/ ##设置目录的属主和属组

5.修改squid配置

[root@squid squid-3.4.6]# vim /etc/squid.conf
http_access allow all     ##添加此行允许所有访问(565行左右)
#http_access deny all    ##将拒绝所有注释掉(不注释也一样,上面允许所有,这个就失去了意义)
http_port 3128         ##默认是3128端口(可以不用改)
cache_effective_user squid   ##添加指定用户squid (可以在60行下插入这两行)
cache_effective_group squid     ##添加指定组 squid
……
[root@squid squid-3.4.6]# squid -k parse   ##检查配置文件中的语法问题
[root@squid squid-3.4.6]# squid -z   ##初始化缓存(需要等一会儿)
############################################################################################
squid -z 初始化错误,提示没有缓存目录
[root@squid squid-3.4.6]#  squid -z
[root@squid squid-3.4.6]# 2020/10/30 19:12:28 kid1| Set Current Directory to /usr/local/squid/var/cache/squid
2020/10/30 19:12:28 kid1| Creating missing swap directories
2020/10/30 19:12:28 kid1| No cache_dir stores are configured.
解决办法
去掉”cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256  ”前面的注释,大概62行左右,否则无法squid -z 初始化
[root@squid squid-3.4.6]#  vim /etc/squid.conf
cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256   ##去掉注释
#############################################################################################

6.开启服务

[root@squid squid]# squid
[root@squid squid]# netstat -anupt |grep 3128   ##查看监听端口
tcp6       0      0 :::3128                 :::*                    LISTEN      68246/(squid-1)

7.设置系统服务项

[root@squid squid]# cd /etc/init.d/
[root@squid init.d]# vi squid
#!/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 -ntap | grep squid &> /dev/nullif [ $? -eq 0 ]thenecho "squid is running"elseecho "正在启动 squid...."$CMDfi;;
stop)$CMD -k kill &> /dev/nullrm -rf $PID &> /dev/null;;
status)[ -f $PID ] &> /dev/nullif [ $? -eq 0 ]thennetstat -ntap | grep squidelseecho "squid is not running"fi;;
restart)$0 stop &> /dev/nullecho "正在关闭 squid..."$0 start &> /dev/nullecho "正在启动 squid...";;
reload)$CMD -k reconfigure;;
check)$CMD -k parse;;
*)echo "用法:$0{start|stop|reload|status|check|restart}";;
esac
[root@squid init.d]# chmod +x squid
[root@squid init.d]# chkconfig --add squid    ##加入到service管理
[root@squid init.d]# chkconfig --list squid
Note: This output shows SysV services only and does not include nativesystemd services. SysV configuration data might be overridden by native……省略部分
squid           0:off   1:off   2:on    3:on    4:on    5:on    6:off[root@squid init.d]# chkconfig --level 35 squid on    ##35级别自启
[root@squid init.d]# chkconfig --list……省略部分
netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
squid           0:off   1:off   2:on    3:on    4:on    5:on    6:off     ##加入到启动项
[root@squid init.d]# service squid stop   ##关闭squid
[root@squid init.d]# netstat -anupt |grep 3128    ##监听端口已关闭
[root@squid init.d]# service squid start   ##启动squid
正在启动 squid....
[root@squid init.d]# netstat -anupt |grep 3128
tcp6       0      0 :::3128                 :::*                    LISTEN      68446/(squid-1)

8.传统代理服务器需要配置的选项

[root@squid init.d]# vim /etc/squid.conf   ## 插入以下几行
cache_mem 64 MB    ##指定缓存使用的空间大小,容量最好为4的倍数
reply_body_max_size 10 MB    ##允许用户下载的最大文件大小,以字节为单位,默认设置为0表示不限制
maximum_object_size 4096 KB     ##允许保存到缓存空间的最大对象大小,以KB为单位,超过限制不会缓存,直接转到web端
[root@squid init.d]# service squid reload   ##重新加载服务

9.放通防火墙规则

[root@squid init.d]# iptables -F
[root@squid init.d]# setenforce 0
setenforce: SELinux is disabled
[root@squid init.d]# iptables -I INPUT -p tcp --dport 3218 -j ACCEPT
[root@squid init.d]# iptables -L --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:smartpacketsChain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

【Web服务器】

1.安装Apache服务

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd

【客户端浏览器访问】访问验证

1.直接访问Apache http://192.168.10.20

[root@localhost ~]# cd /var/log/httpd/
[root@localhost httpd]# ls
access_log error_log
[root@localhost httpd]# cat access_log ##查看访问日志,日志显示来自192.168.10.1的请求
192.168.10.1 - - [30/Oct/2020:19:26:00 +0800] “GET / HTTP/1.1” 403 4897 “-” “Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko”
192.168.10.1 - - [30/Oct/2020:19:26:00 +0800] “GET /noindex/css/bootstrap.min.css HTTP/1.1” 200 19341 “http://192.168.10.20/” “Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko”
……省略部分

2.指定代理服务器后再次访问Apache



3.查看web服务器的访问日志

请求是来自squid的

[root@localhost ~]# cd /var/log/httpd/
[root@localhost httpd]# ls
access_log  error_log
[root@localhost httpd]# cat access_log  ##查看访问日志,日志显示来自代理服务器192.168.10.10的请求
……省略部分
192.168.10.10 - - [30/Oct/2020:19:39:58 +0800] "GET /noindex/css/fonts/Light/OpenSans-Light.ttf HTTP/1.1" 404 240 "http://192.168.10.20/noindex/css/open-sans.css" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
192.168.10.10 - - [30/Oct/2020:19:39:58 +0800] "GET /noindex/css/fonts/Bold/OpenSans-Bold.ttf HTTP/1.1" 404 238 "http://192.168.10.20/noindex/css/open-sans.css" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
192.168.10.10 - - [30/Oct/2020:19:39:58 +0800] "GET /favicon.ico HTTP/1.1" 404 209 "http://192.168.10.20/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"

三、squid透明模式

Squid透明模式挂载原理

1.实验拓扑

基于上面传统模式上进行配置修改

2.配置双网卡

[root@squid ~]# nmcli connection   ##查询新增网卡的UUID
NAME                UUID                                  TYPE            DEVICE
ens33               decf0e5b-f858-4432-9518-eda561739439  802-3-ethernet  ens33
virbr0              fcc9e96f-22f7-48a9-8e47-409a6961bef3  bridge          virbr0
Wired connection 1  282144f0-c96e-309a-9557-b735e4f84518  802-3-ethernet  --
[root@squid ~]# cd /etc/sysconfig/network-scripts/
[root@squid network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
[root@squid network-scripts]# vi ifcfg-ens36
NAME=ens36     ##修改网卡名称
UUID=282144f0-c96e-309a-9557-b735e4f84518   ##修改UUID
DEVICE=ens36    ##修改设备名称
IPADDR=20.0.0.10   ##修改ip
GATEWAY=20.0.0.2   ##修改网关
[root@squid network-scripts]# ifup ens36   ##开启网卡
[root@squid network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.10.10  netmask 255.255.255.0  broadcast 192.168.10.255……省略部分
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 20.0.0.2  netmask 255.255.255.0  broadcast 20.0.0.255
……省略部分

3.设置路由转发

[root@squid ~]# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@squid ~]# sysctl -p    ##生效内核参数修改
net.ipv4.ip_forward = 1

4.修改squid.conf配置

[root@squid ~]# vim /etc/squid.conf
http_port 192.168.10.1:3128 transparent   ##对http_port 3128字段进行修改,改成透明模式
[root@squid ~]# service squid stop
[root@squid ~]# service squid start    ##重启squid

5.配置iptables转发规则

[root@squid ~]# iptables -t nat -F
[root@squid ~]# iptables -F
[root@squid ~]# iptables -t nat -I PREROUTING -i ens33 -s 20.0.0.0/24 -p tcp --dport 80 -j REDIRECT --to 3128   ##原地址是20.0.0.0网段80端口转换成3128端口发送出去
[root@squid ~]# iptables -t nat -I PREROUTING -i ens33 -s 192.168.10.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
[root@squid network-scripts]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT   ##允许入口方向访问3128端口

6.在Web服务器端配置静态回程路由

[root@squid ~]# route add -net 20.0.0.0/24 gw 192.168.10.10  ##添加路由,来自20.0.0.0网段的数据往192.168.10.10接口(Squid外网口)发送
[root@squid ~]# route -n    ##路由条目添加成功
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.2    0.0.0.0         UG    100    0        0 ens33
20.0.0.0        192.168.10.10   255.255.255.0   UG    0      0        0 ens33
192.168.10.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

7.客户端(20.0.0.30)访问web服务器(192.168.10.20)测试

直接访问,不需要在浏览器上配置代理

8.查看Apache访问日志

请求是来自squid代理服务器的

[root@localhost ~]# tail -f /var/log/httpd/access_log   ##请求是来自squid服务器的地址
192.168.10.10 - - [30/Oct/2020:23:37:16 +0800] "GET /noindex/css/fonts/Bold/OpenSans-Bold.woff HTTP/1.1" 404 239 "http://192.168.10.20/noindex/css/open-sans.css" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0"
192.168.10.10 - - [30/Oct/2020:23:37:16 +0800] "GET /noindex/css/fonts/Light/OpenSans-Light.ttf HTTP/1.1" 404 240 "http://192.168.10.20/noindex/css/open-sans.css" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0"
192.168.10.10 - - [30/Oct/2020:23:37:16 +0800] "GET /noindex/css/fonts/Bold/OpenSans-Bold.ttf HTTP/1.1" 404 238 "http://192.168.10.20/noindex/css/open-sans.css" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0"
192.168.10.1 - - [30/Oct/2020:23:37:40 +0800] "-" 408 - "-" "-"

热门!!Squid缓存加速——传统及透明模式服务搭建相关推荐

  1. 部署Squid 代理服务器(内含传统、透明代理服务器的配置、ACL访问控制、日志分析、反向代理)

    标题 一.Squid 代理服务器 代理的工作机制 Squid 代理的类型 二.安装 Squid 服务 1.编译安装 Squid 2.修改 Squid 的配置文件 3.Squid 的运行控制 4.创建 ...

  2. 缓存加速--Squid代理服务器应用(传统代理、透明代理)

    文章目录 一. Squid 服务基础 1.1 代理的工作机制 1.2 代理的基本类型 二. squid代理服务器(传统模式)搭建 实验目的 实验参数 实验过程 1. 手工编译安装squid 2. 修改 ...

  3. Squid 缓存代理(二)---ACL访问控制、日志分析

    文章目录 前言 一.ACL访问控制 1.定义访问控制列表 2.方法一: 3.方法二: 二.日志分析 前言 承接上篇博客Squid 缓存代理(一)-原理及搭建(传统.透明) 一.ACL访问控制 在配置文 ...

  4. 缓存加速CDN——squid代理服务器应用(传统代理,透明代理)

    squid代理服务 一.缓存代理概述 1.1 web代理的工作机制 1.2 阿里云CDN产品介绍与工作原理 1.3 代理的基本类型 1.4 使用代理的好处 二.部署squid传统代理 2.1 实验环境 ...

  5. 缓存加速----Squid传统代理透明代理

    文章目录 前言 一:Squid代理服务概述 1.1:概述 1.2:工作机制 1.3:Squid基本类型 二:环境 三:传统代理试验过程 四:透明代理实验过程 前言 一:Squid代理服务概述 1.1: ...

  6. squid缓存服务器 ACL访问控制 传统代理 透明代理 squid日志分析 反向代理

    缓存代理概述 Squid提供了强大的代理控制机制,通过合理的设置ACL,并进行限制,可以针对源地址.目标地址.访问的URL路径.访问的时间等条件进行过滤. 作为应用层的代理服务器软件,Sqiod主要提 ...

  7. Linux squid构建-传统模式和透明模式部署

    一.传统模式 首先准备两台虚拟机,其中squid的虚拟机要有两张网卡,自己的pc当做客户端,另一台为HTTP服务器.内网为10.10.10.0网段,外网为20.20.20.0网段,并且虚拟机的虚拟网络 ...

  8. Squid代理(传统代理、透明代理、反向代理)、日志分析、ACL访问控制

    Squid代理(传统代理.透明代理.反向代理).日志分析.ACL访问控制 一.Squid代理服务器 1.代理的工作机制 2.代理的类型 二.安装Squid服务 1.编译安装Squid 2.修改Squi ...

  9. 如何使用Squid服务来构建=》传统和透明代理服务器,通俗易懂!

    1.缓存代理概述: 作为应用层的代理服务软件,Squid主要提供缓存加速和应用层过滤控制的功能 2.代理的工作机制: (1)当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存,若缓 ...

最新文章

  1. c语言const与*位置关系,C语言程序的存储区域与const关键字的使用方法
  2. html5常用的属性标签,HTML5常用标签及其属性设置
  3. java代码如何降低重复率_影响网站跳出率的主要因素及如何降低网站跳出率?...
  4. CEdit 控件 更新内容的 方法(可以自动滚动至末尾)
  5. 三十四、R语言数据分析实战
  6. php项目私有化部署保护代码,ThinkPHP项目安全配置解决方案
  7. VS2010断点设置技巧
  8. 深入浅出MongoDB(二)概述
  9. kafka window 启动_Apache Flink结合Kafka构建端到端的Exactly-Once处理
  10. 2016重庆大学计算机学院复试分数线,重庆大学2016考研复试分数线(已公布)
  11. 主要几个浏览器的内核是什么
  12. 【Kotlin】by lazy关键字的实现原理
  13. 新浪微博网页版打开异常解决方案
  14. YOLSO: You Only Look Small Object
  15. Alibaba fastjson 序列化与反序列化
  16. iOS设置Label行间距和字间距
  17. Zookeeper之开源客户端ZkClient
  18. Unity接入腾讯广告/腾讯联盟/优量汇SDK操作步骤——源码+图文效果详情
  19. 微软沈向洋自述:我职业生涯里的七堂课
  20. Network Analysis]复杂网络分析总结

热门文章

  1. 2020美容师(初级)模拟考试及美容师(初级)复审模拟考试
  2. Windows下搭建局域网内简易git服务器
  3. 如何写出更具有Python风格的代码
  4. 便携式洁面仪商城质检报告检验标准是什么
  5. PTCHECK查重好渣啊,还没有paperyy好用
  6. SMB 协议操作共享盘
  7. 用选择法或冒泡法对输入的50个字符(按照ASII码由小到大)进行排序
  8. BK3432和BK3431Q芯片开发问题
  9. vscode 下载地址
  10. EAS7.5服务器文件夹备份,ORACLE+EAS数据备份与恢复参考