Squid服务基础讲解
代理缓存机制:

代理的基本类型:
1、 传统代理:需要在客户端软件手动设置指定代理服务器

2、 透明代理:无需用户手动指定,通过路由、防火墙策略将访问重定向

Squid 反向代理:为网站服务

下面进行实战演练!

实验环境:
代理服务器squid 192.168.80.181
HTTP服务器192.168.80.182
Win7客户端 192.168.80.9
代理服务器端配置如下
[root@aa squid-3.5.27]# tar xf squid-3.5.27.tar.gz -C /opt/ #解压squid源码包
[root@aa squid-3.5.27]# yum install perl-devel #安装perl语言编译插件
[root@aa squid-3.5.27]# cd /opt/squid-3.5.27/
[root@aa squid-3.5.27]# ./configure
--prefix=/usr/local/squid
--sysconfdir=/etc
--enable-arp-acl //支持acl
--enable-linux-netfilter //支持透明代理
--enable-linux-tproxy //重定向
--enable-async-io=100
--enable-err-language="Simplify_Chinese"
--enable-underscore --enable-poll
--enable-gnuregex
[root@aa squid-3.5.27]# make && make install //配置、编译、安装
[root@aa squid-3.5.27]# ln -s /usr/local/squid/sbin/* /usr/local/sbin //
[root@aa squid-3.5.27]# useradd -M -s /sbin/nologin squid
[root@aa squid-3.5.27]# chown -R squid:squid /usr/local/squid/var/
[root@aa squid-3.5.27]# vi /etc/squid.conf
http_port 3128 //59行,在下面新增
visible_hostname 192.168.80.181
cache_mem 64 MB
cache_swap_low 80
cache_swap_high 97
cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256 //68行,去掉注释配置硬盘缓存,打开#.缓存目录100M,其中一级目录16个,二级256个
cache_effective_user squid
cache_effective_group squid //制定squid用户的执行主和组
[root@aa squid-3.5.27]# squid -k parse //检查配置文件
[root@aa squid-3.5.27]# squid –k rec //重新加载配置文件
[root@aa squid-3.5.27]# squid -zX //初始化缓存目录
[root@aa squid-3.5.27]# vi /etc/init.d/squid //制作管理脚本
#!/bin/bash
#chkconfig: 35 90 25
#config: /etc/squid.conf
#pidfile: /usr/local/squid/var/run/squid.pid
#Description: Squid - Internet Object Cache

PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"

case "$1" in
start)
netstat -utpln | grep squid &>/dev/null
if [ $? -eq 0 ]
then
echo "Squid is running"
else
$CMD
fi
;;
stop)
$CMD -k kill &>/dev/null
rm -rf $PID &>/dev/null
;;
status)
[ -f $PID ] &>/dev/null
if [ $? -eq 0 ]
then
netstat -utpln | grep squid
else
echo "Squid is not running"
fi
;;
restart)
$0 stop &>/dev/null
echo "正在关闭Squid..."
$0 start &>/dev/null
echo "正在启动Squid..."
;;
reload)
$CMD -k reconfigure
;;
check)
$CMD -k parse
;;
*)
echo "用法:{start | stop | restart | reload | check | status}"
esac
[root@aa squid-3.5.27]# chmod +x /etc/init.d/squid //赋予启动脚本执行权限
[root@aa squid-3.5.27]# chkconfig --add squid //将squid添加到管理脚本
[root@aa squid-3.5.27]# chkconfig squid on //设置开机自启动
[root@aa squid-3.5.27]# service firewalld stop
[root@aa squid-3.5.27]# setenforce 0
[root@aa squid-3.5.27]# service squid start
[root@aa squid-3.5.27]# netstat -anpt | grep 3128
此时已经可以通过代理服务器访问www服务器了
下面是http服务器的配置
[root@ab ~]# yum install -y httpd //安装httpd服务器
[root@ab ~]# service httpd start //启动
下面客户端直接访问测试

没有指定代理服务器,访问正常
下面客户端指定代理服务器


设置完毕,去http服务器上监控访问日志
[root@ab ~]# tail -f /etc/httpd/logs/access_log
下面再去访问182


访问依旧成功,查看日志发现,实际的访问者为181代理服务器。
du -sh /usr/local/squid/var/cache/squid/

缓存服务器内容已经缓存了

-------------------限制下载文件的大小------------
在http服务器上配置
[root@ab ~]# cd /var/www/html/
[root@ab html]# dd if=/dev/zero of=test1.tgz bs=1M count=11
[root@ab html]# dd if=/dev/zero of=test2.tgz bs=1M count=2 //复制出两个tgz文件用于下载测试。
[root@aa squid-3.5.27]# vi /etc/squid.conf
reply_body_max_size 10 MB //限制文件超过10M的不能下载
[root@aa squid-3.5.27]# service squid restart
客户端测试下载情况
当访问下载test2.tgz时可以成功下载

当访问test1.tgz时,由于大小为11M,则不能下载

-------------下面配置透明代理------------------
代理服务器做为内网的网关设备,两块网卡,一块连接内网,另一块连接外网,测试客户端主机要指网关。
首先理清实验拓扑:通过181的网关代理,使80.9的win7能够上互联网
Win7:ip地址为192.168.80.9,网关地址为192.168.80.181
代理squid:内网网卡地址为192.168.80.181,使用桥接模式连外网

下面进行实验准备,打开代理服务器的桥接模式,两块网卡地址都已经获得了
181为内网,123.197为外网口地址

Ping百度是通的,说明可以上网

将win7之前的指定代理服务器去掉,此时是上不了网的

指定他的网关为192.168.80.181

下面去配置squid透明代理
[root@aa ~]# vi /etc/squid.conf
http_port 192.168.80.181:3128 transparent //将改行修改如此,指定内网卡监听端口
[root@aa ~]# service squid restart
[root@aa ~]# yum install -y iptables-services
[root@aa ~]# systemctl start iptables
[root@aa ~]# iptables –F //清空防火墙nat表内容
[root@aa ~]# iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -s 192.168.80.0/24 -j REDIRECT --to-ports 3128 //对nat表的PREROUTING链做操作,指定内网卡ens33接收到的来自192.168.80.0/24网段的80端口的tcp请求全部转发给3128端口处理
[root@aa ~]# service iptables save //保存防火墙配置

Win7客户端访问百度成功

-------------------下面可以配置acl访问控制---------
[root@aa ~]# vi /etc/squid.conf
Acl和防火墙一样是从上向下依次匹配,匹配及停止,并执行匹配的动作。
#acl localnet src 192.168.0.0/16 //注释本行默认配置

http_access allow all //在本行上面新增ACL语句,如果在该行下面插入,则访问的已经被全部允许了

1.禁止某IP地址主机上网
acl nolink src 192.168.90.9
http_access deny nolink

2.禁止某网段在某时间段上网
acl nolink src 192.168.1.0/24
acl nowang time MTWHF 9:00-11:30
http_access deny nolink nowang

3.禁止所有人访问某网站(精确匹配)
acl nourl dstdomain -i www.qq.com
http_access deny nourl

4.禁止所有人访问某些网站(含有关键字的都会过虑)
acl nourl url_regex -i taobao.com
http_access deny nourl

5.禁止下载某类型的文件
acl nof urlpath_regex -i .avi$ .mkv$
http_access deny nof

6.禁止访问某类型的网站
acl nop url_regex -i ^emule:// ^thunder
http_access deny nop

修改squid配置文件测试
[root@aa ~]# vi /etc/squid.conf
#acl localnet src 192.168.0.0/16 //注释本行默认配置

[root@aa ~]# service squid restart

再次访问,访问被拒绝

---------------配置sarg日志---------------
注意:需要在代理服务器上安装WWW服务器
[root@aa ~]# yum install -y httpd
[root@aa sarg-2.3.11]# tar xf sarg-2.3.11.tar.gz -C /opt/
[root@aa sarg-2.3.11]# cd /opt/sarg-2.3.11/
[root@aa sarg-2.3.11]# ./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection
[root@aa sarg-2.3.11]# make && make install
[root@aa sarg-2.3.11]# vi /etc/sarg/sarg.conf
7 access_log /usr/local/squid/var/logs/access.log //squid的访问日志位置
25 title "Squid User Access Reports" //网页标题
120 output_dir /var/www/html/squid-reports //分析报告的存放位置
178 user_ip no //不使用IP代替用户ID
184 topuser_sort_field BYTES reverse //升序排列
190 user_sort_field BYTES reverse
206 exclude_hosts /usr/local/sarg/noreport //设置不生成报告的主机
257 overwrite_report no
289 mail_utility mailx //指定发邮件命令
434 charset UTF-8
518 weekdays 0-6 //指定top排序星期周期
523 hours 7-12,14,16,18-20 //指定top排序时间周期
633 www_document_root /var/www/html //网页根目录
[root@aa sarg-2.3.11]# ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
[root@aa sarg-2.3.11]# sarg //启动
SARG: Records in file: 102, reading: 100.00%
SARG: Successful report generated on /var/www/html/squid-reports/2018Mar21-2018Mar22

http://192.168.80.181/squid-reports/ //访问日志页

----------------配置squid反向代理-------------
Squid服务器:内网卡192.168.80.181 外网卡192.168.80.90.181
两台web服务器:192.168.80.182 192.168.80.183
Win7客户端:192.168.90.9 gw192.168.90.181
[root@aa network-scripts]# vi /etc/squid.conf
http_port 192.168.90.181:80 vhost vport
cache_peer 192.168.80.182 parent 80 0 no-query round-robin originserver name=s1
cache_peer 192.168.80.183 parent 80 0 no-query round-robin originserver name=s2
cache_peer_domain s1 www.test.com
cache_peer_domain s2 www.abc.com
[root@aa network-scripts]# service squid restart
下面去客户端测试
修改hosts文件
192.168.90.181 www.test.com
192.168.90.181 www.abc.com
访问成功
如果报错访问被拒绝deny改为allow

转载于:https://blog.51cto.com/13490688/2090825

Squid缓存服务器原理与实战演练相关推荐

  1. 编程方式刷新Squid缓存服务器的五种方法

    网站进行内容更新是常有的事情,当被缓存的资源更新时,前端Squid 缓存服务器内容也必须要相应的更新,否则用户就可能会看到过期的数据.当没有程序支持时就需要每次登录到服务器上执行刷新操作,在服务器数量 ...

  2. Squid缓存服务器和代理介绍

    squid的简单介绍 squid的概念 squid是一种用来缓存Internet数据的软件.接受来自人们需要下载的目标(object)的请求并适当的处理这些请求.也就是说,如果一个人想下载一web界面 ...

  3. squid缓存服务器

    squid缓存服务器 缓存概念 作为应用层的代理服务软件,squid主要提供缓存加速和应用层过滤控制功能 代理服务器 客户端向网站发送请求数据 (为了能承受更多的并发连接客户端访问先请求代理服务器听过 ...

  4. 【squid缓存服务器】

    文章目录 一.Squid的简介 二.Squid工作模式 传统模式 透明模式 反向代理模式 三.Squid软件介绍 搭建Squid传统模式 搭建Squid透明模式 搭建Squid反向代理模式 四.Squ ...

  5. Varnish缓存服务器原理

    http://mp.weixin.qq.com/s?__biz=MzA4Nzc4MjI4MQ==&mid=400762358&idx=1&sn=791c1edf90af4856 ...

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

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

  7. 搭建一个大型网站架构的实验环境(Squid缓存服务器篇)

    Squid是一个高性能的代理缓冲服务器,也许你已经用过Windows平台下的WinGate,MS Proxy Server等功能类似的产品.Squid是一个应用级代理,在保证客户端主机和服务器主机网络 ...

  8. NGINX做反向代理缓存服务器原理

    代理服务可以简单的分为正向代理和反向代理 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标web服务器的HTTP请求先发送到 ...

  9. 配置本地缓存服务器(一)

    配置本地缓存服务器(一) 绝大多数系统管理员都遇到过开发部门抱怨软件包下载慢,严重影响工作效率的问题.对此问题,系统管理员也很无奈,无论接入带宽是10M.100M还是1G光纤,都不能解决这个问题.原因 ...

最新文章

  1. 深入实践Spring Boot3.1 模型设计
  2. 经典排序算法 - 鸽巢排序Pigeonhole sort
  3. java多语言编程语言_为什么很多程序员信仰“Java是世界上最好的编程语言”
  4. linux mode4的双网卡绑定,Linux实现双网卡绑定自动化脚本 | 聂扬帆博客
  5. Exynos4412 Uboot 移植(二)—— Uboot 启动流程分析
  6. 1m带宽可以做mysql数据库吗_服务器的1M带宽够用吗?1M网速是多少?
  7. java二次指数平滑法预测未来的值
  8. 网友疯买、雷军力撑,又一家国货站起来了!
  9. matlab 中pid tuning,PID Tuning Algorithm
  10. React 之 JSX
  11. C# 数组拷贝 byte数组拷贝,char数组拷贝
  12. 关于产品经理对Axure的应用
  13. IOS开发之——数据库-Couchbase(05)
  14. 什么是顶级域名,二级域名和三级域名
  15. linux 软件放什么目录,Linux 下的各种目录
  16. 详细解析STM32的时钟系统
  17. VScode 无法保存,文件内容较新
  18. Vue Element table表格实现表头自定义多类型动态筛选 , 目前10种筛选类型,复制即用
  19. Docker可视化工具Portainer安装
  20. MySQL数据库备份练习

热门文章

  1. (附源码)ssm小型超市管理系统的设计与实现 毕业设计 011136
  2. OPPO R8107刷机教程 救砖解锁 刷机包下载
  3. ros2上怎样才能玩rmf?
  4. 大华监控服务器状态变更,大华监控存储设置教程
  5. 自动驾驶仿真软件SCANeR studio(四)scenario模式下脚本
  6. 30 行代码实现蚂蚁森林自动收能量(附送源码)
  7. 线上线下模式暗藏专利风险?
  8. java下载excel导入excel读取excel数据,将数据插入数据库
  9. 我的程序员成长之路——回顾自己三年的工作
  10. 电子邮件发送服务器怎么看钱,验证电子邮件的验证码是发到哪里