【Squid系列005篇】Squid配置CDN节点

📅 发布时间:2026/7/6 5:13:00 👁️ 浏览次数:
【Squid系列005篇】Squid配置CDN节点
文章目录基于 Squid 构建企业级内网 CDN 服务192.168.90.215 为核心节点一、架构设计Squid 实现 CDN 的核心思路整体请求流向CDN 模式二、核心配置Squid 改造为 CDN 边缘节点1. 基础环境准备215 节点2. 完整 CDN 模式 Squid 配置/etc/squid.conf3. 配置加载与初始化215 节点三、源站配置216/217 节点CDN 回源端1. 安装 Apachehttpd作为源站2. 配置业务虚拟主机仅对 215 节点开放3. 启动源站服务四、CDN 服务验证架构师验收标准1. 基础服务验证2. CDN 核心功能验证1缓存加速验证2负载均衡验证3源站保护验证4访问控制验证五、扩展为多节点 CDN进阶方案六、架构总结基于 Squid 构建企业级内网 CDN 服务192.168.90.215 为核心节点一、架构设计Squid 实现 CDN 的核心思路标准 CDN 是「分布式缓存节点 DNS 调度 源站回源」受限于单机房环境我们基于现有节点实现内网级 CDN核心定位边缘节点192.168.90.215Squid 缓存反向代理对外提供服务源站集群192.168.90.216、192.168.90.217业务 Web 节点仅对内网开放核心能力缓存加速、负载均衡、源站保护、访问控制模拟 CDN 核心功能整体请求流向CDN 模式客户端 → DNS解析到 215→ Squid 边缘节点 → 缓存命中直接返回缓存未命中回源到 216/217 → 缓存后返回客户端二、核心配置Squid 改造为 CDN 边缘节点1. 基础环境准备215 节点# 1. 关闭防火墙/SELinux生产环境需按需开放端口systemctl stop firewalldsystemctl disable firewalld setenforce0sed-is/SELINUXenforcing/SELINUXdisabled//etc/selinux/config# 2. 安装 Squidyuminstall-ysquid# 3. 创建大容量缓存目录CDN 核心足够缓存空间mkdir-p/data/squid_cdnchown-Rsquid:squid /data/squid_cdnchmod750/data/squid_cdn2. 完整 CDN 模式 Squid 配置/etc/squid.conf# CDN 边缘节点基础配置 # 监听 80 端口作为 CDN 入口反向代理缓存模式 http_port 192.168.90.215:80 accel vhost vport # 工作进程数匹配 CPU 核心2核CPU 设为 2 workers 2 # 节点标识便于监控/日志定位 visible_hostname squid-cdn-edge-215 # CDN 核心缓存配置关键 # 缓存目录100GB 缓存空间16 一级目录、256 二级目录适配大文件缓存 cache_dir ufs /data/squid_cdn 102400 16 256 # 内存缓存512MB优先缓存热点资源 cache_mem 512 MB # 缓存对象大小1KB-100MB覆盖图片、静态资源、大文件 minimum_object_size 1 KB maximum_object_size 104857600 KB # 缓存替换策略LRU淘汰冷数据保留热点 cache_replacement_policy lru # 缓存有效期策略CDN 核心按资源类型精细化控制 refresh_pattern -i \.(jpg|jpeg|png|gif|ico|css|js)$ 1440 50% 10080 ignore-reload refresh_pattern -i \.(html|htm)$ 360 30% 1440 refresh_pattern ^http: 0 20% 4320 refresh_pattern . 0 20% 4320 # CDN 回源配置源站集群 # 源站 1216 节点轮询调度最大连接数 100权重 1 cache_peer 192.168.90.216 parent 80 0 no-query originserver round-robin max_conn100 weight1 nameorigin-web-01 # 源站 2217 节点轮询调度最大连接数 100权重 1 cache_peer 192.168.90.217 parent 80 0 no-query originserver round-robin max_conn100 weight1 nameorigin-web-02 # 绑定业务域名CDN 服务域名www.test.com cache_peer_domain origin-web-01 origin-web-02 .test.com # 回源超时15 秒避免源站故障导致 CDN 节点阻塞 cache_peer_connect_timeout 15 seconds # 回源失败重试2 次 cache_peer_retry 2 # CDN 访问控制与安全 # 允许内网所有客户端访问CDN 服务范围 acl INTERNAL_CLIENTS src 192.168.90.0/24 # 允许访问的业务域名 acl CDN_DOMAIN dstdomain .test.com # 拦截不安全端口/恶意路径 acl UNSAFE_PORTS port 7 9 11 13 15 17 19 20 21 22 23 25 37 42 43 53 77 79 87 95 101 102 103 104 105 106 107 108 109 110 111 113 115 117 119 123 135 139 143 161 179 389 465 512 513 514 515 540 556 563 587 601 636 993 995 2049 4045 6000 acl MALICIOUS_PATH urlpath_regex /etc/passwd /.env /.git /phpinfo.php # 访问规则顺序敏感默认拒绝 http_access deny UNSAFE_PORTS http_access deny MALICIOUS_PATH http_access allow INTERNAL_CLIENTS CDN_DOMAIN http_access deny all # CDN 日志与监控 # 访问日志CDN 核心审计日志记录缓存状态、回源状态 access_log /var/log/squid/cdn_access.log cdn_log # 缓存日志记录缓存命中/失效、回源情况 cache_log /var/log/squid/cdn_cache.log # 自定义日志格式包含缓存状态、回源状态 logformat cdn_log %a %ui %un [%tl] %rm %ru HTTP/%rv %Hs %st %{Referer}h %{User-Agent}h %Ss:%Sh %{X-Cache}h %{X-Cache-Lookup}h # 性能与超时优化 connect_timeout 10 seconds request_timeout 30 seconds idle_timeout 60 seconds quick_abort_min 16 KB quick_abort_max 100 KB quick_abort_pct 953. 配置加载与初始化215 节点# 1. 语法检查企业级必须执行避免配置错误squid-kparse# 2. 初始化缓存目录首次部署必须执行squid-z# 3. 启动 Squid 并设置开机自启systemctl start squid systemctlenablesquid# 4. 热重载配置修改后无需重启服务squid-kreconfigure三、源站配置216/217 节点CDN 回源端1. 安装 Apachehttpd作为源站yuminstall-yhttpd2. 配置业务虚拟主机仅对 215 节点开放vim/etc/httpd/conf.d/test.conf写入VirtualHost *:80 ServerName www.test.com DocumentRoot /var/www/html/test # 仅允许 215 节点回源核心安全源站不对外暴露 Directory /var/www/html/test Require ip 192.168.90.215 /Directory ErrorLog /var/log/httpd/test_error.log CustomLog /var/log/httpd/test_access.log combined /VirtualHost3. 启动源站服务systemctl start httpd systemctlenablehttpd# 验证源站仅对 215 开放在 215 节点执行curl-HHost: www.test.comhttp://192.168.90.216curl-HHost: www.test.comhttp://192.168.90.217四、CDN 服务验证架构师验收标准1. 基础服务验证端口监听netstat -ntap | grep squid确认 Squid 监听192.168.90.215:80服务可达客户端配置hosts192.168.90.215 www.test.com访问http://www.test.com正常显示源站内容2. CDN 核心功能验证1缓存加速验证首次访问查看 215 节点日志tail -f /var/log/squid/cdn_access.log状态为MISS未命中回源二次访问状态变为HIT命中直接从缓存返回访问速度显著提升2负载均衡验证多次刷新页面交替显示 216、217 节点内容验证 Squid 轮询调度生效3源站保护验证客户端直接访问192.168.90.216/192.168.90.217返回 403 拒绝源站仅对 215 开放停止单台源站如 216CDN 服务仍正常自动转发到 2174访问控制验证非 192.168.90.0/24 网段客户端访问返回 403 拒绝访问恶意路径如www.test.com/.env返回 403 拒绝五、扩展为多节点 CDN进阶方案若需模拟真实分布式 CDN可新增边缘节点新增边缘节点192.168.90.218部署相同 Squid 配置缓存目录独立DNS 调度配置 DNS 轮询将www.test.com解析到 215、218 节点实现就近访问缓存同步通过squid -k reconfigure统一缓存策略实现分布式缓存监控告警部署 PrometheusGrafana监控缓存命中率、回源率、节点负载六、架构总结基于 Squid 构建的内网 CDN 服务核心价值缓存加速静态资源缓存命中率可达 80%大幅降低源站压力与内网带宽消耗源站保护隐藏真实源站 IP仅允许 Squid 节点回源提升安全等级负载均衡轮询调度多源站实现业务高可用可扩展性可快速扩展为多边缘节点模拟分布式 CDN 架构