跳转到内容
Guides 2 分钟阅读 1041 次浏览

Tinyproxy

了解 Tinyproxy——面向 Linux 的极简 HTTP 代理。本指南介绍这款轻量服务器的简易安装与配置。

Tinyproxy

Tinyproxy 是一款轻量级的开源 HTTP/HTTPS 代理服务器,专为在 Linux 系统上以最小资源占用运行而设计。它提供基础的代理功能,适用于嵌入式设备、个人使用,或对资源效率有严格要求的小规模网络环境。

概述与使用场景

相比大型代理方案中的高级缓存、完善的认证方式或 SOCKS 代理能力,Tinyproxy 更看重占用小和配置简单。它主要作为 HTTP/HTTPS(CONNECT 方法)代理运行。

Tinyproxy 的典型使用场景包括:

  • 个人代理: 为个人用户隐藏客户端 IP 地址或绕过基础的地域限制。
  • 嵌入式系统: 在 CPU、内存和存储资源有限的设备上提供代理服务。
  • 开发环境: 本地测试支持代理的应用程序,或检查网络流量。
  • 小型网络网关: 为少量客户端提供简单的、无缓存的代理。
  • 代理串联: 在多级代理架构中充当中间节点。

安装

大多数 Linux 发行版的标准软件源中都提供 Tinyproxy。

Debian/Ubuntu

sudo apt update
sudo apt install tinyproxy

RHEL/CentOS/Fedora

sudo dnf install tinyproxy
# 或者用于较旧的 CentOS/RHEL:
# sudo yum install tinyproxy

安装完成后,Tinyproxy 通常会自动启动并监听 8888 端口。

配置

Tinyproxy 通过单个配置文件进行管理,通常位于 /etc/tinyproxy/tinyproxy.conf。默认文件中的所有指令都带有注释,具备自文档特性。

核心指令

  • Port:指定 Tinyproxy 监听的端口。
    Port 8888
    修改该值后需要重启 Tinyproxy 服务。

  • Listen:把 Tinyproxy 绑定到指定 IP 地址。默认监听所有可用网络接口(0.0.0.0)。指定地址可以限制访问范围。
    Listen 192.168.1.10

  • Allow:定义允许连接到代理的 IP 地址或子网。可以使用多条 Allow 指令。如果没有指定任何 Allow 指令,Tinyproxy 会允许来自所有主机的连接。先显式拒绝全部、再放行特定网段是常见的安全做法。
    # Deny all by default (if no Allow directives are present, this is implicitly false) # Allow 127.0.0.1 # Allow 192.168.1.0/24

  • Timeout:设置连接的空闲超时时间,单位为秒。
    Timeout 600

  • User / Group:指定 Tinyproxy 启动后降权使用的用户和用户组。以非 root 用户运行是安全最佳实践。
    User tinyproxy Group tinyproxy

  • LogLevel:控制日志详细程度。可选值包括 CriticalErrorWarningNoticeInfoDebug
    LogLevel Info

  • LogFile:指定日志文件路径。
    LogFile "/var/log/tinyproxy/tinyproxy.log"

  • MaxClients:设置 Tinyproxy 可处理的最大并发客户端连接数。超过该上限的连接会被拒绝。
    MaxClients 100

  • DisableViaHeader:启用后,Tinyproxy 不会在出站请求中添加 Via 头。这可以避免暴露代理的存在,从而提升隐私性。
    DisableViaHeader Yes

  • ConnectPort:指定 Tinyproxy 允许 CONNECT 请求(用于 HTTPS 隧道)使用的端口。可以使用多条 ConnectPort 指令。
    ConnectPort 443 ConnectPort 563

高级配置指令

  • Upstream:把 Tinyproxy 串联到另一台代理服务器。该指令为特定域名或全部流量指定上游代理。
    ```
    # Use upstream_proxy.example.com:8080 for all requests
    Upstream http upstream_proxy.example.com:8080

    Use a different upstream for specific domains

    Upstream http 10.0.0.1:3128 "example.com"
    Upstream http 10.0.0.1:3128 ".example.org"
    `` 关键字http表示这是一个 HTTP 代理。Upstream` 指令按顺序处理,首个匹配项生效。

  • NoCache:阻止 Tinyproxy 发送可能导致客户端缓存的特定 HTTP 头。这并不意味着 Tinyproxy 自身具备缓存机制。
    NoCache

  • Filter / FilterURLs / FilterBypass:提供基于正则表达式的基础内容过滤。

    • Filter "/etc/tinyproxy/filter.txt":指定包含待拦截 URL 正则表达式的文件。
    • FilterURLs Yes:启用 URL 过滤。
    • FilterBypass "192.168.1.0/24":允许指定客户端跳过过滤。

    filter.txt 文件每行包含一条正则表达式。例如,拦截 Facebook:
    .*facebook\.com.*
    这只是一种简易的过滤机制,无法替代专业的内容过滤方案。

服务管理

修改 tinyproxy.conf 之后,必须重启 Tinyproxy 服务,改动才会生效。

Systemd(现代 Linux 发行版)

sudo systemctl restart tinyproxy
sudo systemctl enable tinyproxy # 确保开机自启
sudo systemctl status tinyproxy

SysVinit(较旧的 Linux 发行版)

sudo /etc/init.d/tinyproxy restart
sudo /etc/init.d/tinyproxy status

测试代理

完成配置并重启服务后,即可测试代理。

使用 curl

curl -x http://localhost:8888 http://ipinfo.io/ip

如果从另一台机器测试,请把 localhost:8888 替换为 Tinyproxy 服务器的 IP 和端口。输出应显示 Tinyproxy 服务器的公网 IP 地址,而不是客户端的地址。

浏览器配置

把浏览器(例如 Firefox、Chrome)配置为使用 Tinyproxy 服务器 IP 地址和端口上的 HTTP 代理,然后访问一个网站确认连通性。

安全注意事项

  • 访问控制: 务必使用 Allow 指令限制对代理的访问。默认情况下,若没有任何 Allow 指令,Tinyproxy 可能接受来自所有主机的连接。
  • 防火墙: 配置系统防火墙(例如 ufwfirewalld),仅允许受信任的 IP 段访问 Tinyproxy 端口。
    bash # 使用 ufw 的示例 sudo ufw allow from 192.168.1.0/24 to any port 8888 sudo ufw enable
  • 非 root 用户: 确保 Tinyproxy 以非 root 用户运行(UserGroup 指令),以降低潜在安全风险。
  • 日志: 监控 Tinyproxy 日志中的异常活动。
  • DisableViaHeader 可考虑启用以提升隐私性,但它并不提供匿名性。

与 Squid 的对比

Tinyproxy 和 Squid 都是 Linux 上的 HTTP 代理服务器,但面向不同的使用场景,功能集也不同。

特性 Tinyproxy Squid
主要目标 资源占用最小、简单 高性能、功能丰富、缓存
资源占用 CPU/内存占用极低 CPU/内存中到高,尤其在大缓存和高流量下
缓存 无内置缓存 面向 HTTP 对象的丰富、可配置缓存
认证 原生不支持 Basic、Digest、NTLM、Kerberos、外部 helper
访问控制 基于 IP(Allow 指令) 基于 IP、域名、URL、用户、时间、方法等的高粒度 ACL
协议 HTTP、HTTPS(CONNECT) HTTP、HTTPS(CONNECT)、FTP、Gopher、SOCKS(上游的客户端侧)
透明代理 不支持透明代理 完整支持透明代理
复杂度 配置简单、指令少 配置复杂、指令众多、脚本能力强大
典型用途 嵌入式系统、个人代理、小型局域网 企业网络、ISP、大型组织、内容过滤、安全

故障排查

  • 查看日志: LogFile 指令指定 Tinyproxy 写入日志的位置。排查问题时把 LogLevel 提高到 Debug 以获得更详细的输出。
    bash sudo tail -f /var/log/tinyproxy/tinyproxy.log
  • 服务状态:systemctl status tinyproxy/etc/init.d/tinyproxy status 确认 Tinyproxy 正在运行。
  • 防火墙: 确认防火墙没有拦截到 Tinyproxy 端口的连接。必要时可临时关闭防火墙进行测试。
  • 配置语法: 检查 tinyproxy.conf 是否存在语法错误。配置格式有误时,Tinyproxy 往往无法启动,或在日志中报错。
  • 网络连通性: 确保 Tinyproxy 服务器能够访问目标地址。
已更新: 04.03.2026
返回分类

试用我们的代理

遍布 100+ 国家的 20,000+ 代理

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.