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

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 BumpSSL 卸载SSL Bump
典型端口312880/4433129(拦截)

1.3 Squid 与其他代理软件对比

特性SquidNginx (代理)HAProxyVarnishEnvoy
主要定位通用代理缓存Web 服务器/代理负载均衡HTTP 缓存Service Mesh
正向代理✅ 原生❌ 不支持
反向代理
缓存能力★★★★★★★★★★★★★★★
ACL 粒度★★★★★★★★★★★★★★★★
SSL Bump
协议支持HTTP/HTTPS/FTP/WSHTTP/HTTPS/WS/TCPTCP/HTTPHTTPHTTP/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.x2001基础代理缓存
Squid 3.x2009ICAP 支持、SSL Bump、eCAP
Squid 4.x2018安全加固、性能优化、原生 HTTPS 代理
Squid 5.x2021RocksDB 缓存目录、安全更新
Squid 6.x2023新 ACL 类型、性能改进、HTTP/2 支持增强

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

1.6 核心术语表

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

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

扩展阅读