TinyProxy 使用帮助

英文原文在此:https://tinyproxy.github.io/

TinyProxy

Tinyproxy 是一个面向 POSIX 系统开发的轻量级的开源 HTTP/HTTPS 代理守护进程,其从底层开始进行设计,保证了在高速的同时体积依然很小。它很适合用于需要完整 HTTP 代理特性,但系统资源又不足以运行大型代理的场景,比如嵌入式部署。
Tineproxy 采用 GNU GPL 协议(版本2及以上)分发。

特性


Tinyproxy 的体积很小,也仅需少量系统资源。在使用 glibc 时,内存占用一般大约 2 MB,而 CPU 占用会随着连接数量线性增长(具体取决于连接速度)。因此,Tinyproxy 可用在比较老旧的计算机上,或者用在基于Linux的路由器等网络设备上,而不会对设备性能造成明显的影响。
Tinyproxy 的构建和运行仅需一个最小化的 POSIX 环境。同时,它可以用其他附加库来添加额外功能。
Tinyproxy 允许进行 HTTPS 连接的转发,而且无需通过 CONNECT 方法以任何形式修改流量内容(请参阅ConnectPort指令)。
Tinyproxy 支持被配置为一个透明代理,使客户端无需进行任何配置即可使用代理。您也可以将其用作您网站的反向代理前端。
使用 AddHeader 指令,您可以向传出的流量里添加或插入 HTTP 标头信息。
如果您要构建自定义Web代理,可以轻松地修改Tinyproxy以满足您的自定义需求。 源码结构非常简单,遵循 KISS 原则。 因此,可以把它作为基础,来实现您可能需要Web代理执行的任何操作。
Tinyproxy具有隐私功能,可让您配置哪些HTTP标头可被允许通过,哪些HTTP标头应被阻止。 这使您既可以限制从HTTP服务器向Web浏览器发送的数据(例如Cookie),也可以限制从Web浏览器到HTTP服务器发送的数据(例如版本信息)。
通过使用远程监视工具,您可以远程获知代理统计信息,从而确切了解代理的繁忙程度。
您可以配置Tinyproxy来实现 访问控制 ,从而仅允许来自特定子网或特定接口的请求,从而确保那些随机出现的、未经授权的人不能使用您的代理。
只需进行一些配置(具体而言,将Tinyproxy创建的文件设为由非root用户拥有,并让它在大于1024的端口上运行),就能让 Tinyproxy 在没有任何特殊权限的情况下运行,从而将系统受到破坏的风险降至最低。 此外,它的设计致力于防止缓冲区溢出。 代码结构的简单也确保了此类bug易于定位。

下载


  • 对于 Red Hat Enterprise Linux 或其派生系统(例如 CentOS ),可以执行yum install tinyproxy 从 EPEL 仓库中安装 Tinyproxy。
  • 对于 Fedora,执行 yum install tinyproxy 来安装 Tinyproxy。
  • 对于 Debian 或其派生发行版本,执行 apt-get install tinyproxy 来安装Tinyproxy。
  • 对于 openSUSE,执行 zypper in tinyproxy 进行安装。
  • 对于 Arch,用户可以从社区仓库中安装 Tinyproxy 软件包。执行 pacman -S tinyproxy 进行安装。
  • 对于 FreeBSD,OpenBSD 或 NetBSD,用户可以使用 pkg_add 程序来安装 Tinyproxy 软件包。
  • 对于 Mac OS X 用户,可以查看 MacPorts 来检查其中的 Tinyproxy 端口是否已是最新版本。

如果您觉得您操作系统中的 Tinyproxy 二进制软件包不是最新的,请联系该操作系统的软件包维护者。 如果这行不通,您也可以从源代码编译得到最新的稳定版本。
我们以源代码的形式分发 Tinyproxy,必须在对其编译后,才能在您的系统上使用。 请查看源代码树中的 INSTALL 文件,获取构建说明。 Tinyproxy 的最新稳定发行版本是 tinyproxy-1.8.4.tar.bz2, 它发布于2016年1月1日。Tinyproxy 1.8.4 的 NEWS 文件包含了发行说明。您可以使用其PGP签名验证tarball。 您也可以浏览 Tinyproxy 旧的发行版本。
我们使用 Git 作为 Tinyproxy 源代码仓库的版本控制系统。 要获取 Tinyproxy 仓库的副本,请使用以下命令:

git clone https://github.com/tinyproxy/tinyproxy.git

文档


名称

tinyproxy.conf - Tinyproxy HTTP 代理守护进程配置文件

描述

tinyproxy(8) 读取它的配置文件,一般存放在 /etc/tinyproxy/tinyproxy.conf路径(或在命令行里用-c参数传递给Tinyproxy的路径)下。该页面描述配置文件的语法和内容。Tinyproxy 配置文件包含很多键值对,每行一对。以 #开头的行或者空白行是注释,会被忽略。关键字不区分大小写,但值内容会区分大小写。如果值内容里包含空格,可以将他们括在双引号"中。可用的关键字及其描述如下:

  • User
    在以root用户身份完成初始端口绑定之后,Tinyproxy进程会以该用户的身份来运行。可以填用户名或UID。

  • Group
    在以root用户身份完成初始端口绑定之后,Tinyproxy进程会以该用户组的身份来运行。可以填组名或GID。

  • Port
    Tinyproxy服务将侦听的端口。 如果端口小于 1024,则需要以 root 用户的身份启动 Tinyproxy 进程。

  • Listen
    在默认情况下,Tinyproxy 会侦听在所有可用接口上的连接(即,侦听地址 0.0.0.0)。通过配置此参数,Tinyproxy 可以被告知仅侦听一个特定地址。

  • Bind
    这允许您指定 Tinyproxy 将绑定到哪个目标地址,以将其连接到Web服务器或上游代理。

  • BindSame
    如果此布尔值选项被设置为 Yes,Tinyproxy 会将目标地址设定为触发了传出请求的传入连接的IP地址。

  • Timeout
    Tinyproxy关闭连接之前,允许该连接处于非活动状态的最大秒数。

  • ErrorFile
    该选项控制 Tinyproxy 如果遇到特定的HTTP错误时,会返回哪个HTML文件。它包含两个参数,错误号、HTML错误文件的路径。

  • DefaultErrorFile
    该选项控制如果发生未配置的错误时,返回的HTML模板文件。

  • StatHost
    该选项配置被当作统计主机的主机名或者IP地址:每当收到对该主机的请求时,Tinyproxy 会返回内部统计信息页面,而不会将请求转发给该主机。此页面的模板可以使用 StatFile 配置项进行配置。StatHost 的默认值为 tinyproxy.stats

  • StatFile
    该选项配置 Tinyproxy 在收到对统计主机的请求时发送的HTML文件。如果未设置此选项,Tinyproxy 将返回一个硬编码的基本统计信息页面。有关详细信息,请参见 tinyproxy(8) 手册页中的 STATHOST 部分。需要注意的是,使用StatFile 以及 ErrorFile 和 DefaultErrorFile 选项配置的错误文件都是模板文件,其中可以包含一些模板变量,并由 Tinyproxy 在发送时进行扩展。例如,"{cause}" 表示简短的错误描述,"{detail}"表示详细的错误消息。tinyproxy(8) 手册页包含所有模板变量的描述。

  • LogFile
    该选项控制 Tinyproxy 将调试输出写入文件的位置。 此外,Tinyproxy 可以将日志输出到syslog - 请参阅 Syslog 选项。

  • Syslog
    当设为 On 时,此选项告知 Tinyproxy 将其调试消息写入syslog,而不是写入由 LogFile 所配置的日志文件。这两个选项是互斥的。

  • LogLevel
    设置日志级别。高于或等于该设置项级别的日志消息会被记录。例如,如果LogLevel设为 Warning,则从WarningCritical级别的所有日志消息会被输出,但Notice或更低等级的日志消息会被过滤掉。允许的取值如下:

Critical(最简洁)
Error
Warning
Notice
Connect(不包含Info的连接日志)
Info(最详细)
  • PidFile
    该选项控制 Tinyproxy 主进程将其进程 ID 号存入的文件路径,用于处理信号。

  • XTinyproxy
    将此选项设置为Yes将通知Tinyproxy将包含客户端IP地址的标头X-Tinyproxy添加到请求中。

  • Upstream,No Upstream
    该选项允许您设置一组基于所访问站点主机或域的规则,来选择是否使用某些上游代理服务器。这些规则按照在配置文件中录入的顺序存储,并且在使用时 最后一条 所匹配的规则会生效。有以下三种指定上游主机的方式:

  upstream host:port                 开启一个常规形式的上游代理
  upstream host:port "site_spec"     为匹配 site_spec 的站点启用上游代理
  no upstream "site_spec"            为匹配 site_spec 的站点禁用上游代理

站点可以用主机名、域名、IP范围等形式来指定:

 .name         匹配任何在域 name 中的主机
 .             匹配任何无域名的主机(在空域名中)
 IP/bits       匹配IP地址/掩码位数
 IP/mask       匹配IP地址/掩码
  • MaxClients
    Tinyproxy 为每一个连接的客户端创建一个子进程。 此选项指定可创建的最大进程数量。 也就是说,至多只有 MaxClients这么多个客户端可以同时连接到 Tinyproxy。

  • MinSpareServers, MaxSpareServers
    Tinyproxy 始终保留一定数量的空闲子进程,以保证它可以快速处理新传入的客户端请求。 MinSpareServer 和 MaxSpareServers 控制备用进程数的最大值和最小值。即,当备用服务器的数量降至 MinSpareServers以下时,Tinyproxy 将在后台开始创建新的备用进程,而当备用进程的数量超过 MaxSpareServers 时,Tinyproxy 将杀死多余的进程。

  • StartServers
    初始化启动的服务进程数。一般应将其设置为位于 MinSpareServersMaxSpareServers 之间的值。

  • MaxRequestsPerChild
    此选项限制一个子进程在终止之前将会处理的最大连接数。 默认值为0,即无限制。此选项是在出现内存泄漏问题时可采取的紧急措施。 在这种情况下,请将 MaxRequestsPerChild 设置为例如100010000,可能会有用。

  • Allow, Deny
    Allow和Deny选项用于自定义允许哪些客户端访问Tinyproxy。 Allow和Deny行可以在配置文件里重复出现,以构建Tinyproxy的访问控制列表。在配置文件中的顺序很重要。 如果没有 Allow 或 Deny 行,则允许任意的客户端。反之,默认的操作是拒绝访问。 允许或拒绝的参数可以配置为客户端主机的单个IP地址,例如 127.0.0.1,IP地址范围,例如 192.168.0.1/24,或将与客户端主机名尾端匹配的字符串, 可以是完整的主机名,例如 host.example.com,或域名,例如.example.com,或者顶级域名,例如.com

  • AddHeader
    配置一个或多个 HTTP 请求标头,用于添加到由 Tinyproxy 发出的 HTTP 请求中。 需要注意的是,此选项不适用于 HTTPS 流量,因为 Tinyproxy 无法控制要交换的标头。

AddHeader "X-My-Header" "Powered by Tinyproxy"
  • ViaProxyName
    RFC 2616 要求代理将 Via 标头添加到 HTTP 请求中,但使用真实主机名可能会引起安全问题。 如果设置了 ViaProxyName 选项,其字符串值将用作 Via 标头中的主机名。 否则,将使用服务器的主机名。

  • DisableViaHeader
    该选项设置为 yes 时,Tinyproxy 不会将 Via 标头添加到请求中。 这实际上就使 Tinyproxy 进入了隐身模式。请注意,RFC 2616 要求代理设置 Via 头,因此启用此选项会破坏合规性。 除非您知道自己在做什么,否则不要禁用 Via 标头...

  • Filter
    Tinyproxy 支持基于 URL 或域的网站过滤。 此选项指定包含过滤规则的文件的位置,每行一条规则。

  • FilterURLs
    如果此布尔选项设置为 YesOn,则根据 URL 执行过滤,而不根据域执行过滤。默认设置为根据域进行过滤。

  • FilterExtended
    如果此布尔选项设置为 Yes,则扩展的 POSIX 正则表达式将用来匹配过滤器规则。默认使用基本 POSIX 正则表达式。

  • FilterCaseSensitive
    如果此布尔选项设置为 Yes,则过滤器规则匹配时会区分大小写。 默认匹配时不区分大小写。

  • FilterDefaultDeny
    默认的过滤策略会允许所有与过滤规则不匹配的内容。 将 FilterDefaultDeny 设置为 Yes 会更改该策略,从而拒绝在过滤规则所匹配的域或URL之外的任何内容。

  • Anonymous
    如果设置了 Anonymous 选项,则启用匿名代理。由 Anonymous 配置的标头被允许通过,其他标头会被拒绝。 如果未配置 Anonymous 选项,则允许所有标头通过。您必须给标头内容加上引号。
    大多数站点都需要启用 cookie 才能正常工作,因此,如果您访问这种站点,需要允许 cookie 通过。
    用法举例:

Anonymous "Host"
Anonymous "Authorization"
Anonymous "Cookie"
  • ConnectPort
    此选项用于指定 CONNECT 方法所允许的端口。 如果找不到 ConnectPort 行,则允许所有端口。若要完全禁用 CONNECT,请仅设置一条值为 0 的 ConnectPort 选项行。

  • ReversePath
    配置一条或多条 ReversePath 选项,以启用反向代理支持。 使用反向代理,可以使许多站点看起来像是单个站点的一部分。
    配置以下指令,并在自己的计算机上的端口 8888上运行 Tinyproxy,则可以通过 http://localhost:8888/example/来访问站点 example.com

ReversePath "/example/" "http://www.example.com/"
  • ReverseOnly
    当把 Tinyproxy 用作反向代理时,强烈建议将此布尔选项设置为 Yes ,从而关闭普通代理功能。

  • ReverseMagic
    将此选项设置为Yes,可让 Tinyproxy 使用 cookie 来跟踪反向代理的映射。 如果您需要反向具有绝对链接的代理站点,必须启用此选项。

  • ReverseBaseURL
    用于访问此反向代理的URL地址。 该 URL 会被用于重写 HTTP 重定向地址,以使它们不会绕过代理。 如果您有一连串的反向代理,则需要在此处放置最外层的 URL(也就是终端用户在其浏览器中键入的地址)。如果未设置此选项,则不会修改重定向。

支持


  • 您可以随时通过 github issues 来报告新 bug,或提出功能建议。
  • Tinyproxy的开发者们也会浏览在irc.freenode.net上的 #tinyproxy 标签。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271