强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

Squid 完全指南 / 01 - Squid 简介

第一章:Squid 简介

1.1 什么是 Squid

Squid 是一款开源的高性能代理缓存服务器(Proxy Cache Server),由美国国家科学基金会资助开发,始于 1996 年。它支持 HTTP、HTTPS、FTP 等协议,广泛应用于企业网络、ISP 和 CDN 场景。

客户端 ──→ Squid Proxy ──→ 互联网(目标服务器)
            │
            ├── 缓存命中 → 直接返回
            └── 缓存未命中 → 转发请求 → 缓存响应 → 返回客户端

核心能力一览

能力 说明
正向代理 (Forward Proxy) 代理客户端访问外部资源
反向代理 (Reverse Proxy) 代理服务器对外提供服务
缓存加速 缓存静态和动态内容,减少带宽
访问控制 基于 ACL 的细粒度权限管理
内容过滤 URL 过滤、域名黑白名单
负载均衡 后端服务器负载分担
SSL 拦截 HTTPS 流量解密与审计
日志审计 完整的访问日志和统计

1.2 代理类型详解

1.2.1 正向代理 (Forward Proxy)

正向代理代表客户端向服务器发起请求。客户端需要显式配置代理地址,或通过透明代理(Transparent Proxy)自动转发。

[公司内网 PC] ──→ [Squid 正向代理] ──→ [互联网]
   客户端配置           网关/防火墙          目标网站
   代理地址

典型场景

  • 企业员工上网行为管理
  • 节省出口带宽(缓存常用资源)
  • 绕过地理限制或访问控制
  • 隐藏客户端真实 IP

1.2.2 反向代理 (Reverse Proxy)

反向代理代表服务器接收客户端请求。客户端无感知代理的存在,认为自己直接与目标服务器通信。

[互联网用户] ──→ [Squid 反向代理] ──→ [后端 Web 服务器集群]
  无感知代理          加速 + 负载均衡       多台源站

典型场景

  • Web 服务器加速(缓存静态页面)
  • 负载均衡(分发请求到多台后端)
  • SSL 卸载(在代理层终结 HTTPS)
  • 安全防护(隐藏后端服务器信息)

1.2.3 透明代理 (Transparent Proxy)

透明代理无需客户端配置,通过网络层(iptables/nftables)将流量重定向到代理端口。

[客户端] ──→ [路由器/防火墙 NAT 重定向] ──→ [Squid 透明代理] ──→ [互联网]
  无需配置           iptables REDIRECT            拦截并代理

典型场景

  • 网吧、学校等公共场所无感知上网管控
  • 家庭网络家长控制
  • ISP 级别的流量优化

1.2.4 代理类型对比

特性 正向代理 反向代理 透明代理
代表谁 客户端 服务器 客户端
客户端配置 需要 不需要 不需要
网络配置 不需要 需要 DNS 解析 需要 iptables
部署位置 客户端与互联网之间 服务器前端 网关/防火墙
主要用途 上网管控、缓存 加速、负载均衡 无感知管控
SSL 处理 SSL Bump SSL 卸载 SSL Bump
典型端口 3128 80/443 3129(拦截)

1.3 Squid 与其他代理软件对比

特性 Squid Nginx (代理) HAProxy Varnish Envoy
主要定位 通用代理缓存 Web 服务器/代理 负载均衡 HTTP 缓存 Service Mesh
正向代理 ✅ 原生 ❌ 不支持
反向代理
缓存能力 ★★★★★ ★★★ ★★★★★ ★★
ACL 粒度 ★★★★★ ★★★ ★★★ ★★ ★★★
SSL Bump
协议支持 HTTP/HTTPS/FTP/WS HTTP/HTTPS/WS/TCP TCP/HTTP HTTP HTTP/gRPC/TCP
配置复杂度
内存占用
学习曲线 陡峭 平缓 平缓 平缓 陡峭

选型建议

场景 推荐方案
企业正向代理 + 上网管理 Squid
Web 反向代理 + 负载均衡 Nginx 或 HAProxy
高性能 HTTP 缓存 Varnish 或 Squid
HTTPS 流量审计 Squid (SSL Bump)
Service Mesh / 微服务 Envoy
简单负载均衡 HAProxy

1.4 Squid 的适用场景

场景一:企业互联网出口代理

┌─────────────────────────────────┐
│           企业内网               │
│  ┌──────┐ ┌──────┐ ┌──────┐   │
│  │PC-1  │ │PC-2  │ │PC-3  │   │
│  └──┬───┘ └──┬───┘ └──┬───┘   │
│     └────────┼────────┘        │
│              ▼                  │
│     ┌────────────────┐         │
│     │ Squid 正向代理  │         │
│     │ • 上网认证      │         │
│     │ • URL 过滤      │         │
│     │ • 带宽优化      │         │
│     │ • 日志审计      │         │
│     └───────┬────────┘         │
│             │                   │
└─────────────┼───────────────────┘
              ▼
         ┌──────────┐
         │  互联网   │
         └──────────┘

场景二:CDN 边缘缓存节点

[用户请求] → [DNS 智能解析] → [Squid 边缘节点]
                                    │
                          ┌─────────┼─────────┐
                          ▼         ▼         ▼
                       [缓存命中] [回源请求] [多源站负载]

场景三:开发测试环境抓包

# 开发者配置浏览器代理指向 Squid
# Squid 开启详细日志,记录所有 HTTP/HTTPS 请求
# 结合 SSL Bump 解密 HTTPS 流量用于调试

场景四:安全合规审计

  • 金融行业:审计所有外发 HTTP/HTTPS 请求
  • 政企单位:内容过滤和访问日志留存
  • 教育机构:未成年人上网保护

1.5 Squid 版本历史

版本 发布时间 主要特性
Squid 2.x 2001 基础代理缓存
Squid 3.x 2009 ICAP 支持、SSL Bump、eCAP
Squid 4.x 2018 安全加固、性能优化、原生 HTTPS 代理
Squid 5.x 2021 RocksDB 缓存目录、安全更新
Squid 6.x 2023 新 ACL 类型、性能改进、HTTP/2 支持增强

注意:Squid 3.x 和 4.x 已停止维护,生产环境建议使用 5.x6.x

1.6 核心术语表

术语 英文 说明
代理 Proxy 代表客户端或服务器转发请求
缓存 Cache 存储已获取内容以加速后续访问
ACL Access Control List 访问控制列表
命中率 Hit Ratio 缓存命中请求占总请求的比例
回源 Origin Fetch 缓存未命中时向源站请求
父代理 Parent Proxy 上级代理服务器
缓存对等体 Cache Peer 同级或上级缓存节点
SSL Bump SSL Bumping HTTPS 流量中间人解密
ICAP Internet Content Adaptation Protocol 内容适配协议
eCAP eCAP Adaptation Protocol 嵌入式内容适配
Store Storage Backend 缓存存储后端
WCCP Web Cache Communication Protocol Web 缓存通信协议

1.7 快速验证你的 Squid

如果你已经安装了 Squid,可以快速验证其基本功能:

# 检查 Squid 版本
squid -v

# 检查配置文件语法
squid -k parse

# 启动 Squid(前台调试模式)
squid -N -d 1

# 使用 curl 通过代理访问
curl -x http://localhost:3128 http://example.com

# 查看缓存命中情况
curl -x http://localhost:3128 -I http://example.com
# 观察响应头中的 X-Cache: HIT 或 X-Cache: MISS

1.8 本章小结

要点 说明
Squid 定位 通用代理缓存服务器,兼顾正向/反向代理
核心优势 ACL 粒度细、缓存能力强、SSL Bump、协议支持广
适用场景 企业代理、CDN 缓存、安全审计、开发调试
版本选择 生产环境使用 5.x 或 6.x
学习路径 从正向代理入手,逐步掌握缓存、ACL、SSL

扩展阅读