头图

简介

Tinyproxy 是一款轻量级 HTTP 代理服务器,使用最少的资源,非常适合硬件有限的系统。尽管体积小,但它可以处理大量流量,而不会出现明显的性能问题。旨在处理简单的代理任务。它通常用于路由网络流量以保护隐私、缓存或访问受限资源。

它的设计初衷是快速而小巧,是嵌入式部署等用例的理想解决方案。

Tinyproxy占用空间小,并且只需要很少的系统资源。使用 glibc 时,内存占用大约为2 MB, CPU负载随着同时连接的数量线性增加(取决于连接的速度)。因此,Tinyproxy 可以在较旧的机器上运行,也可以在基于 Linux 的宽带路由器等网络设备上运行,而不会对性能产生任何明显影响。

安装

Debian/Ubuntu:

sudo apt update
sudo apt install tinyproxy

CentOS/RHEL/Fedora:

sudo yum install tinyproxy
sudo dnf install tinyproxy

MacOS

brew install tinyproxy

github 拉取源码后手动编译

./autogen.sh
./configure
make
make install

编译选项

  • --enable-debug:启用完整的调试支持
  • --enable-xtinyproxy:编译对 XTinyproxy 标头的支持
  • --enable-filter:允许 Tinyproxy 过滤掉某些域名和 URL
  • --enable-upstream:启用上游代理支持
  • --enable-transparent:允许将 Tinyproxy 用作透明代理守护程序
  • --enable-reverse:启用反向代理支持
  • --with-stathost=HOST:设置统计主机的默认名称

启动运行

启动 tinyproxy

systemctl start tinyproxy

设置开机自启动

systemctl enable tinyproxy

查看运行状态

systemctl status tinyproxy

如何配置 tinyproxy

tinyproxy 配置文件位于 /etc/tinyproxy/tinyproxy.conf

设置 tinyproxy 监听传入连接的端口(默认值:8888)

Port 8888

设置 tinyproxy 绑定到的网络接口(例如,localhost 仅供本地使用):

Listen 127.0.0.1:8888

指定 tinyproxy 应将传入连接绑定到哪个本地网络接口

# for IPv4
Bind 192.168.1.100

# for IPv6
Bind 2001:db8::1

# 绑定到本机
Bind 127.0.0.1

PortListenBind 比较

  • Port 仅绑定端口
  • Bind 仅绑定网络接口或IP地址
  • Listen 可以同时绑定IP地址和端口,一步到位
  • Listen 的优先级最高,会覆盖 Port 指定的端口

指定哪些 IP 地址可以使用代理

Allow 192.168.1.0/24

设置调试的日志级别

可用的级别有:CriticalErrorWarningNoticeConnectInfo

LogLevel Info

启用基本身份验证来限制访问

客户端在设置代理连接时需要输入用户名和密码

BasicAuth username password

修改代理发送的标头

AddHeader X-Proxy-Name "Tinyproxy"

通过创建过滤器列表来阻止指定的域名或URL

# 配置过滤器文件的位置
Filter "/etc/tinyproxy/filter"

/etc/tinyproxy/filter 文件配置示例:

可以使用基本正则表达式

facebook.com
example.com

# 精确过滤 cnn.com
 ^cnn\.com$

# 过滤 cnn.com 的所有子域名,但不过滤 cnn.com 本身
.*\.cnn.com$

# 过滤任何包含 cnn.com 的域名,例如
cnn\.com

# 过滤以 cnn.com 结尾的任何域名
cnn\.com$

# 过滤所有以 adserver 开头的域名
^adserver

tinyproxy 作为透明代理运行

TransparentProxy On

使用 iptables 重定向流量

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j 
REDIRECT --to-port 8888

tinyproxy 使用上游代理,将请求转发到另一个代理服务器上

Upstream http proxy.example.com:8080
Upstream https proxy.example.com:8443

tinyproxy 作为反向代理服务器

ReversePath "/api" "http://backend-server.local/"

配置 tinyproy 只作为反向代理服务器

关闭正常代理
ReverseOnly Yes

使 tinyproxy 使用 cookie 来跟踪反向代理映射

ReverseMagic Yes

设置 tinyproxyPID 文件位置

PidFile "/var/run/tinyproxy/tinyproxy.pid"

指定 tinyproxy 在关闭空闲连接之前应等待的时间。

Timeout 600

限制同时连接到 tinyproxy 的客户端数量

MaxClients 100

启用 HTTPS 连接支持

ConnectPort 443

启用匿名模式来隐藏内部网络信息

Anonymous "headers"

查看 tinyproxy 日志

tail -f /var/log/tinyproxy/tinyproxy.log

使用 debug 模式启动 tinyproxy

sudo tinyproxy -d -c /etc/tinyproxy/tinyproxy.conf

设置 tinyproxy 的日志文件位置

LogFile /var/log/tinyproxy.log

添加一个包含客户端 IP 地址的标头 X-Tinyproxy

XTinyproxy Yes

查看 tinyproxy 的版本

tinyproxy -v

资源


唐青枫
12 声望2 粉丝