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.x 或 6.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 |