Squid缓存服务器原理与实战演练
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缓存服务器原理与实战演练相关推荐
- 编程方式刷新Squid缓存服务器的五种方法
网站进行内容更新是常有的事情,当被缓存的资源更新时,前端Squid 缓存服务器内容也必须要相应的更新,否则用户就可能会看到过期的数据.当没有程序支持时就需要每次登录到服务器上执行刷新操作,在服务器数量 ...
- Squid缓存服务器和代理介绍
squid的简单介绍 squid的概念 squid是一种用来缓存Internet数据的软件.接受来自人们需要下载的目标(object)的请求并适当的处理这些请求.也就是说,如果一个人想下载一web界面 ...
- squid缓存服务器
squid缓存服务器 缓存概念 作为应用层的代理服务软件,squid主要提供缓存加速和应用层过滤控制功能 代理服务器 客户端向网站发送请求数据 (为了能承受更多的并发连接客户端访问先请求代理服务器听过 ...
- 【squid缓存服务器】
文章目录 一.Squid的简介 二.Squid工作模式 传统模式 透明模式 反向代理模式 三.Squid软件介绍 搭建Squid传统模式 搭建Squid透明模式 搭建Squid反向代理模式 四.Squ ...
- Varnish缓存服务器原理
http://mp.weixin.qq.com/s?__biz=MzA4Nzc4MjI4MQ==&mid=400762358&idx=1&sn=791c1edf90af4856 ...
- squid缓存服务器 ACL访问控制 传统代理 透明代理 squid日志分析 反向代理
缓存代理概述 Squid提供了强大的代理控制机制,通过合理的设置ACL,并进行限制,可以针对源地址.目标地址.访问的URL路径.访问的时间等条件进行过滤. 作为应用层的代理服务器软件,Sqiod主要提 ...
- 搭建一个大型网站架构的实验环境(Squid缓存服务器篇)
Squid是一个高性能的代理缓冲服务器,也许你已经用过Windows平台下的WinGate,MS Proxy Server等功能类似的产品.Squid是一个应用级代理,在保证客户端主机和服务器主机网络 ...
- NGINX做反向代理缓存服务器原理
代理服务可以简单的分为正向代理和反向代理 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标web服务器的HTTP请求先发送到 ...
- 配置本地缓存服务器(一)
配置本地缓存服务器(一) 绝大多数系统管理员都遇到过开发部门抱怨软件包下载慢,严重影响工作效率的问题.对此问题,系统管理员也很无奈,无论接入带宽是10M.100M还是1G光纤,都不能解决这个问题.原因 ...
最新文章
- 深入实践Spring Boot3.1 模型设计
- 经典排序算法 - 鸽巢排序Pigeonhole sort
- java多语言编程语言_为什么很多程序员信仰“Java是世界上最好的编程语言”
- linux mode4的双网卡绑定,Linux实现双网卡绑定自动化脚本 | 聂扬帆博客
- Exynos4412 Uboot 移植(二)—— Uboot 启动流程分析
- 1m带宽可以做mysql数据库吗_服务器的1M带宽够用吗?1M网速是多少?
- java二次指数平滑法预测未来的值
- 网友疯买、雷军力撑,又一家国货站起来了!
- matlab 中pid tuning,PID Tuning Algorithm
- React 之 JSX
- C# 数组拷贝 byte数组拷贝,char数组拷贝
- 关于产品经理对Axure的应用
- IOS开发之——数据库-Couchbase(05)
- 什么是顶级域名,二级域名和三级域名
- linux 软件放什么目录,Linux 下的各种目录
- 详细解析STM32的时钟系统
- VScode 无法保存,文件内容较新
- Vue Element table表格实现表头自定义多类型动态筛选 , 目前10种筛选类型,复制即用
- Docker可视化工具Portainer安装
- MySQL数据库备份练习