|NO.Z.00016|——————————|^^ 构建 ^^|——|squid缓存/代理服务.V1|——|4台server|
一、squid简介
### --- squid简介
~~~ 一个缓存服务器的守护进程
~~~ (二八原则:百分之八十的访问量都是由百分之二十的数据去完成的。)
~~~ FTP(VSFTP的前端的缓存) HTTP SSL: 支持的反向代理的类型
~~~ 磁盘 分区 目录 object :
~~~ 不同磁盘下构建分区再在分区下构建目录,只能支持二级目录,
~~~ 在下面存放的是object(对象的含义在squid中是缓存,充当着缓存的角色)
~~~ (通过下面两个表进行查找,就可以快速的查找到缓存)
~~~ Hash tables 目录 每个digest的索引信息
~~~ Digest tables 索引 不同分区对应object大概说明
~~~ (UFS的文件系统,UFS不支持太复杂的权限设置,它也不需要太复杂的权限设置)
~~~ squid针对的是单个文件比较大的类型缓存,性能较高 squid只支持rr模式。
~~~ Varnish :squid的竞争者。通过内存分页技术传输数据。
~~~ 单个文件比较小的类型缓存性能相对squid的较好。
二、Squid工作逻辑

### --- Squid工作逻辑
~~~ 客户机发起请求到squid代理服务器,
~~~ squid代理服务器会在cache中寻找到底有没有想要数据的存储文件或者缓存文件
~~~ 若是没有它会向后端服务器发起请求,后端服务器会把这个请求返回给squid服务器
~~~ squid服务器把数据存储在cache中,再返回给客户端。
~~~ 下一次进来访问若是有缓存会直接把数据返回给客户端。不需要进行后端服务器的交互
~~~ 设置最大的缓存量,以及缓存的约束,来减少squid的压力
三、工作模式
### --- 工作模式
~~~ 传统代理:内网用户做的加速访问
~~~ 透明代理:内网用户做的加速访问
~~~ 反向代理:公网用户做的加速访问
四、传统模式

### --- 传统模式
~~~ Internet服务器是公网的web服务器公网存在对应的web服务器
~~~ 内网想访问公网的话,必须要把请求交给squid服务器
~~~ squid服务器会向公网索要数据,公网反馈数据给squid服务器之后
~~~ squid服务器再返回给客户端,达到代理的过程。
~~~ 相当于我要什么,都是squid帮我获取数据。
~~~ 若是下一次再次访问这个数据,squid不会进行公网交互,会直接在缓存中获取数据。
~~~ 明确指明代理服务器的IP地址和端口号:IE——>internet选项——>连接
~~~ ——>局域网LAN设置——>代理服务器(告诉这个浏览器要是想要访问公网的话
~~~ 那个IP和端口去获取数据)内网情况下配置(透明模式可以解决这一缺陷)
五、透明模式

### --- 透明模式
~~~ 工作流程和传统模式的工作模式一直
~~~ 通过防火墙iptables或者其它功能的设置去让服务功能自动的转交,
~~~ 在客户端里不需要配置代理端的IP端口。
~~~ 内网用户可能不知道使用squid服务代理上网,但实实在在进行squid服务提供服务。
六、反向代理模式

### --- 反向代理模式
~~~ web1/web2/web3服务器是在内网环境下,
~~~ PC1.PC2两个公网的客户端
~~~ 客户端通过公网访问到squid服务器,squid服务器再访问到web服务器。
~~~ squid拿到数据之后会把数据缓存在本机。下一次公网用户访问相同数据时直接返回,
~~~ 减轻后端服务器的压力。
七、squid简介(版本到达3.x版本)
### --- squid简介(版本到达3.x版本)
~~~ squid服务端:
~~~ 软件包:squid-2.6.STABLE21-6.e15(3.1之后使用c语言重构)
~~~ 系统服务:squid
~~~ 主程序:/usr/sbin/squid
~~~ 主配置文件:/etc/squid/squid.con
~~~ 默认监听端口: TCP 3128
~~~ 默认访问日志:/var/log/squid/access.log
八、常见配置
### --- 常见配置
http_port 3128 // 指定端口
access_log /var/log/squid/access.log squid // 指定日志及日志的用户squid
cache_mem 64 MB // cache_mem squid进程能够调用的最大的内存资源
cache_dir ufs /var/spool/squid 100 16 256 // cache_dir缓存目录,使用的文件系统UFS /var/spool/squid缓存目录路径 100:缓存目录能够使 用的最大的存储资源兆比,16:一级目录的最大个数,256:二级目录的最大个数
visible_hostname proxy.benet.com // visible_hostname:可见名称 proxy.benet.com名称命名格式
dns_testnames www/google.com www.163.com // dns_testnames:dns代理,squid代理用户请求的,若是发现自己都宕机的话是不可以代理的。它有一个自我判断自己是否宕机的机制,通过访问较为稳定的公网www/google.com www.163.com:定时的去测试是否能够正常访问;若是不可以访问,说明它已经宕机,会发出相应的告警信息
maximum_object_size 4096 KB // 缓存:maximum_object_size 4096 KB 最大缓存对象的大小 ,缓存一般缓存的是 静态资源。此超过4096就不需要缓存了
reply_body_max_size 10MB // 允许:reply_body_max_size 10MB 允许我们访问的最大的单个文件最大的大小。允许经过通过代理的最大数据。
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
cdv001-lbchac
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通