Tinyproxy 介绍与选型指南
轻量级 HTTP/HTTPS 正向代理 Tinyproxy 的定位、架构与功能特性溯源介绍,附与 Squid/Privoxy/Dante 的量化选型对比。
Tinyproxy 介绍与选型指南
目标:基于官方公开资料溯源介绍轻量级 HTTP/HTTPS 正向代理 Tinyproxy 的定位、核心架构、功能特性与选型依据,帮助读者判断「轻量代理网关」场景下该选谁。本文为认知篇,全部版本号、日期与社区数据均联网实查官方渠道并标注来源与查询日期 2026-10-22,不做本地实测;快速开始一节给出官方标准用法,逐行实测回显沉淀于本专栏安装指南篇。
一、信息基准
本文全部事实性数据的来源与查询日期(2026-10-22):
| 数据项 | 来源 | 说明 |
|---|---|---|
| 项目定位与特性描述 | Tinyproxy 官方站点 https://tinyproxy.github.io/ | GitHub Pages 托管的官方网站 |
| 最新稳定版 1.11.3(2026-03-07 发布)与发布注记、源码包 sha512 | GitHub Releases https://github.com/tinyproxy/tinyproxy/releases | 溯源主渠道(见下述站点迁移说明) |
| 社区活跃度(Stars 约 6k、Forks 766) | shields.io 徽章实时读取 GitHub 数据 | 查询日期 2026-10-22 |
| 代码最近提交 2026-09-21 | 仓库 master 分支 commit Atom 源 | 查询日期 2026-10-22 |
| 许可证 GPL-2.0 | GitHub 仓库页 license 字段(SPDX:GPL-2.0) | GNU GPL v2 或以上(官方站点表述) |
| 同类对比参照 | 本站《Squid 7.7 介绍与选型指南》《Privoxy 4.2.0 介绍与选型指南》 | 详见文末站内链接 |
⚠️ 溯源渠道说明:Tinyproxy 早期的官方站点与 Bug 跟踪(banu.com、bugzilla.banu.com)已失效多年,官方 1.10.0 发布注记中也明确提及该站已不存在;因此本文版本、安全修复与发布信息一律以 GitHub(tinyproxy/tinyproxy)与 GitHub Pages 官方站点为准,查询日期 2026-10-22。
二、软件概述
Tinyproxy 是一个轻量级 HTTP/HTTPS 代理守护进程(proxy daemon),面向 POSIX 操作系统。官方站点对其的定位是「为资源受限场景设计的快速而小巧的 HTTP 代理」:在 glibc 环境下内存占用约 2 MB,CPU 负载随并发连接数线性增长,因此可以直接跑在老旧服务器、网络设备或嵌入式环境上而几乎不影响整机性能(来源:tinyproxy.github.io,查询日期 2026-10-22)。
项目由 GNU GPL(版本 2 或以上)授权发行,源码遵循 KISS 原则、结构简单,官方明确把「易于修改、适合作为自定义 Web 代理的基础」作为卖点之一。工程形态上它是一个标准的单文件配置(tinyproxy.conf)+ systemd 托管的守护进程,主流发行版(Debian/Ubuntu、RHEL 系、Alpine 等)仓库均有打包,安装即用。
在代理形态上,Tinyproxy 以正向代理为主(客户端显式配置代理地址出网),同时内置透明代理与反向代理模式,通过 CONNECT 方法转发 HTTPS 流量且不改动隧道内容。版本主线当前为 1.11.x:最新稳定版 1.11.3 于 2026-03-07 发布(来源:GitHub Releases,查询日期 2026-10-22)。
三、核心架构
Tinyproxy 的架构可以用「单文件配置 + 单进程多线程 + 无状态转发」概括:
3.1 进程模型
主进程以 root 身份启动并绑定监听端口(默认 8888),随后按配置中的 User/Group 降权到普通用户运行;每来一个客户端连接就由线程池处理,线程数量上限由 MaxClients 控制(Ubuntu 包默认 100)。它是「单进程 + 多线程」模型,没有独立的管理进程,也没有主备/集群概念——高可用靠外部负载均衡或 DNS 轮询。
3.2 请求处理链路
一个客户端请求在 Tinyproxy 内部依次经过:
- 访问控制(ACL):
Allow/Deny规则按顺序匹配客户端来源 IP,命中放行、默认拒绝(一旦配置了 Allow 行); - 认证(可选):
BasicAuth启用后校验 Proxy-Authorization,失败返回 407; - 方法分流:
- 普通 HTTP 请求 → 按配置决定是否注入
Via、X-Tinyproxy、AddHeader自定义头,可再经Anonymous白名单剥离敏感头; - CONNECT 请求 → 校验
ConnectPort端口白名单,通过后建立 TCP 隧道原样转发(HTTPS 内容对代理不可见);
- 普通 HTTP 请求 → 按配置决定是否注入
- 上游路由(可选):配置
Upstream规则后按「最后一条命中规则生效」的语义,把请求转给上级 HTTP/SOCKS4/SOCKS5 代理或对特定域直连; - 过滤(可选):
Filter规则文件按域名/URL 拦截,返回 403 并记录日志。
3.3 配置与观测面
- 配置:唯一入口是
tinyproxy.conf(Ubuntu 位于/etc/tinyproxy/tinyproxy.conf),无热加载,修改后需重启服务生效;没有nginx -t式的配置预检查命令,排障靠tinyproxy -d前台运行直接看报错行号。 - 观测:六个级别的日志(Critical→Info)写入文件或 syslog;内置统计页——请求主机名
tinyproxy.stats(StatHost 默认值)时返回运行时统计;错误页模板(default.html 等)可按状态码自定义。 - 无管理 API:不提供 REST/gRPC 管理接口,一切运维动作都落在配置文件与 systemd/journald 上。
3.4 发行版包形态
以 Ubuntu 22.04 为例,apt 包提供:/usr/bin/tinyproxy 主程序、/lib/systemd/system/tinyproxy.service 服务单元、/etc/logrotate.d/tinyproxy 日志轮转、/usr/share/tinyproxy/*.html 错误页与统计页模板,安装即自启。上游源码(GitHub Releases 提供 tar.gz/bz2/xz 并公布 sha512)默认安装到 /usr/local 前缀,可与发行版包共存。
四、功能特性
以下特性均出自官方站点特性页与 GitHub Releases 发布注记(查询日期 2026-10-22):
- 极小资源占用:glibc 下内存约 2 MB,CPU 随连接数线性增长;
- HTTPS 转发:通过 CONNECT 方法原样转发 HTTPS 流量,不改动任何隧道内容(可用 ConnectPort 限制可连目标端口);
- 透明代理:可不配置客户端直接在网关上拦截转发;
- 反向代理:通过 ReversePath 把多个站点映射到同一站点树,支持 ReverseMagic/ReverseBaseURL;
- 自定义请求头:AddHeader 向出站 HTTP 请求注入自定义头(仅 HTTP,HTTPS 隧道内容不可见);
- 隐私控制:Anonymous 白名单决定哪些请求头允许通过,实现匿名代理;
- 代理认证:BasicAuth(1.10.0 起支持)为代理加 Basic 认证门槛;
- 上游代理:Upstream 规则支持 http/socks4/socks5 类型(SOCKS 上游 1.10.0 起支持)与按域/网段分流直连;
- 多监听地址:1.10.0 起支持多条 Listen 同时绑定多个地址;
- 域名/URL 过滤:Filter 规则文件 + 正则类型可选(1.11.1 新增 fnmatch 类型);
- 可观测:六级日志、内置统计页、可自定义错误页。
💡 技术拓展:同为「正向代理」,业界常见选项按协议层可分为 HTTP 代理(Squid、Privoxy、Tinyproxy)与 SOCKS 代理(Dante、3proxy 等)两类。HTTP 代理工作在应用层、能理解并改写 HTTP 头(因此可做认证、注入、过滤),HTTPS 则以 CONNECT 隧道透传;SOCKS 代理工作在会话层、对流量内容完全无感知、协议更通用但无法做 HTTP 级控制。本文主角 Tinyproxy 属于前者中的极简派;SOCKS 场景应另选 Dante 等专用实现。
五、快速开始(最小可用示例)
以下为 Ubuntu 22.04 上的官方标准用法(发行版仓库安装路径),完整逐行实测回显、日志排障与源码编译方案见本专栏《Ubuntu 22.04 安装 Tinyproxy 指南》:
apt-get update && apt-get install -y tinyproxy
systemctl is-active tinyproxy
curl -s -x http://127.0.0.1:8888 -o /dev/null -w "%{http_code}\n" http://example.com
三步含义:安装发行版包(自动注册 systemd 服务并开机自启)→ 确认服务 active → 本机走 8888 代理请求外网返回 200 即为可用。放行局域网客户端只需在 /etc/tinyproxy/tinyproxy.conf 追加一行 Allow <网段>(如 Allow 10.89.65.0/24)并重启服务;每个参数的实测行为与生产模板见本专栏《Tinyproxy 配置参数详解》,日常命令与 curl 验证手法见《Tinyproxy 常用 CLI 命令与验证方法详解》。
六、适用场景与限制
6.1 典型适用场景
- 内网共享出网网关:几十到几百客户端规模的内网统一出口,配 ACL + 认证收紧滥用;
- 低配/嵌入式设备:路由器、ARM 小主机、老旧服务器上的常驻代理(2 MB 内存量级几乎无压力);
- CI/自动化任务的出口代理:给构建机、爬虫、采集脚本提供可控出网入口,日志可审计;
- 链式上游/分流出口:用 Upstream 按域或网段把流量引到不同上级代理(含 SOCKS5),实现一机多出口;
- 透明网关代理:配合 iptables/nftables 做不配置客户端的透明转发。
6.2 能力边界与限制
- 无缓存:不做任何内容缓存与加速,需要缓存代理(CDN 前置、带宽节省)选 Squid;
- 无内容改写/广告过滤:只有域名/URL 级黑白名单,没有 Privoxy 那种规则级内容改写;
- 无管理 API 与 Web UI:一切靠配置文件 + systemd,不适合需要在线管控面板的团队;
- 单机架构:无原生集群/高可用,多实例需外部调度;
- HTTPS 盲区:隧道内容不可见,AddHeader/Anonymous 等 HTTP 头特性对 HTTPS 流量无效;
- 版本碎片:发行版仓库版本明显落后上游(Ubuntu 22.04 为 1.11.0,上游 1.11.3),且部分新指令(如 BasicAuthRealm)在旧版会直接解析报错,跨版本迁移配置需逐条核对。
七、同类选型对比
对比对象:Squid(全功能缓存代理)、Privoxy(内容过滤代理)、Dante(SOCKS 服务器)。均为开源自托管组件,定位相邻但侧重不同:
| 维度 | Tinyproxy | Squid | Privoxy | Dante |
|---|---|---|---|---|
| 一句话定位 | 极轻量 HTTP/HTTPS 正向代理 | 全功能缓存/正向+反向代理 | 隐私增强与内容过滤代理 | SOCKS4/5 服务器 |
| 协议层 | HTTP 1.0/1.1 + CONNECT | HTTP/HTTPS/FTP + ICP 等 | HTTP/HTTPS(CONNECT 受限) | SOCKS(会话层,协议无关) |
| 缓存 | 无 | 有(核心卖点) | 无 | 无 |
| 内容级过滤/改写 | 无(仅域/URL 黑白名单) | 部分(ICAP/ACL) | 有(核心卖点,规则引擎) | 无 |
| 代理认证 | Basic | 多种(Basic/Negotiate/Kerberos…) | Basic | 用户名/密码 |
| 上游代理 | http/socks4/socks5 按规则分流 | cache_peer 层级 | 转发代理(forward-socks 等) | 无(自身即 SOCKS 服务端) |
| 透明代理 | 支持 | 支持 | 支持 | 不适用 |
| 反向代理 | 支持(简单映射) | 支持( accel 模式,能力强) | 不作为重点 | 不适用 |
| 内存量级 | 官方口径约 2 MB | 数十 MB 起步,随缓存增长 | 数 MB 量级 | 数 MB 量级 |
| 许可证 | GPL-2.0+ | GPL-2.0+ | GPL-3.0+ | BSD 类 |
| 社区数据(查询 2026-10-22) | GitHub Stars 约 6k、Forks 766、最近提交 2026-09-21 | GitHub 镜像仓库 Stars 约 3.1k | 以官方 SourceForge 项目页为准 | 以官方仓库为准 |
| 最新版本节奏 | 1.11.3(2026-03-07) | 7.7(详见站内 Squid 篇) | 4.2.0(详见站内 Privoxy 篇) | 1.4.x 系列 |
关键差异与选型建议:
- 要小、要省、要快上线:Tinyproxy 是默认答案——发行版一条 apt 命令、2 MB 内存、单文件配置,正向代理场景里部署成本最低;
- 要缓存/带宽优化/大规模并发:选 Squid,缓存与 ACL 体系成熟,代价是更重的资源与配置负担;
- 要去广告/改内容/强隐私:选 Privoxy,规则引擎独一档,常与 Tinyproxy/Squid 链式组合使用;
- 要 SOCKS 协议出口(数据库工具、SSH 动态转发等非 HTTP 客户端):HTTP 代理不适用,选 Dante 或 3proxy;
- 组合打法:Tinyproxy(入口+ACL+认证)→ Upstream 指向 Privoxy(过滤)或 Squid(缓存)的链式架构,兼顾轻量入口与重处理能力。
若需进一步阅读同类组件的完整实测系列,见站内文档:《Squid 7.7 介绍与选型指南》、《Privoxy 4.2.0 介绍与选型指南》。
八、参考链接
- Tinyproxy 官方站点(GitHub Pages):https://tinyproxy.github.io/
- GitHub 仓库:https://github.com/tinyproxy/tinyproxy
- GitHub Releases(1.11.3 发布注记与 sha512,查询日期 2026-10-22):https://github.com/tinyproxy/tinyproxy/releases
- 本专栏实测系列:《Ubuntu 22.04 安装 Tinyproxy 指南》、《Tinyproxy 配置参数详解》、《Tinyproxy 常用 CLI 命令与验证方法详解》