最近一个项目需要用HTTP代理,免费的都不可靠,付费的不想用,本来只需要三两个就够了,所以就打算在自己的服务器弄个轻量的、不占资源的,发现了Tinyproxy,试了下很好用,随手把文档翻译了,机翻+人工审校,供参考。
安装配置
非常简单,用代码+注释演示下:
# 安装
sudo apt install tinyproxy
# 修改配置文件,只改监听端口、允许端口、允许地址即可
sudo vim /etc/tinyproxy.conf
# 修改默认端口8888为一个其它的,例如3654,减少被扫描攻击
Port 3654
# 允许连接的目标端口,默认是443和563,我们加上80
ConnectPort 80
ConnectPort 443
ConnectPort 563
# 允许的客户端地址,默认只开放127.0.0.1,此处将自己工作机的IP段也允许。Tinyproxy暂不支持配置用户认证,所以这个配置对防止他人滥用非常重要。
Allow 127.0.0.1
Allow 123.321.36.0/22
#Allow 192.168.0.0/16
#Allow 172.16.0.0/12
#Allow 10.0.0.0/8
# 启动,如果修改配置文件要生效需restart,而不是reload
sudo service tinyproxy start
# 测试
curl -x xx.xx.xx.xx:3654 --connect-timeout 5 http://baidu.com
文档翻译
Tinyproxy是POSIX操作系统的轻量级HTTP/HTTPS代理守护程序。从一开始就设计得快速而小巧,它是一个理想的解决方案,适用于需要全功能HTTP代理的嵌入式部署,但没有足够的系统资源运行一个更重的代理时。
使用GNU GPL许可证(版本2或更高版本)分发Tinyproxy。
功能
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可以在没有任何特殊权限的情况下运行,从而最大限度地减少系统的安全隐患。此外,它的设计着眼于防止缓冲区溢出。代码的简单性确保了发现此类错误仍然很容易。
下载
- 在Red Hat Enterprise Linux或其衍生产品(如CentOS)上,通过运行yum install tinyproxy从EPEL存储库安装Tinyproxy。
- 在Fedora上,运行yum install tinyproxy安装Tinyproxy。
- 在Debian和派生的发行版上,运行apt-get install tinyproxy来安装Tinyproxy。
- 对于openSUSE运行:tinyproxy中的zypper
- 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存储库的副本,请使用以下命令:
文档
名称
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
此参数控制发生给定HTTP错误时Tinyproxy返回的HTML文件。它需要两个参数,错误号和HTML错误文件的位置。 - DefaultErrorFile
此参数控制发生错误时返回的HTML模板文件,但未设置任何特定错误文件。 - StatHost
这会配置被视为统计主机的主机名或IP地址:每当收到对此主机的请求时,Tinyproxy将返回内部统计页面而不是转发请求该主机。可以使用StatFile配置选项配置此页面的模板。StatHost的默认值是tinyproxy.stats。 - StatFile
这会配置Tinyproxy收到stathost请求时发送的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,则会输出从Warning到Critical的所有日志消息,但会禁止通知及以下。允许的值是:Critical
严重(最详细)Error
错误Warning
警告Notice
注意Connect
连接(没有信息噪音的日志连接)Info
信息(最详细)
- PidFile
此选项控制主Tinyproxy进程存储其进程ID的文件的位置,以用于发送信号。 - XTinyproxy
将此选项设置为Yes会告诉Tinyproxy将包含客户端IP地址的标题X-Tinyproxy添加到请求中。 - Upstream, No Upstream
此选项允许您根据站点的主机或域,设置一组规则来决定是否使用上游代理服务器访问。规则以配置文件中遇到的顺序存储,并且LAST匹配规则获胜。指定上游规则有三种可能的形式:- 上游主机:端口通常会转向代理上游支持。
- 上游主机:端口”site_spec”打开与site_spec匹配的站点的上游代理。
- 没有上游”site_spec”关闭与site_spec匹配的站点的上游支持。
该站点可以多种形式指定为主机名,域名或IP范围:
name
与主机完全匹配.name
匹配域”name”中的任何主机.
匹配任何没有域的主机(在空域中)IP/bits
匹配 network/maskIP/mask
匹配 网络/掩码
- MaxClients
Tinyproxy为每个连接的客户端创建一个子进程。此选项指定将创建的绝对最高编号进程。换句话说,只有MaxClients客户端可以同时连接到Tinyproxy。 - MinSpareServers, MaxSpareServers
Tinyproxy始终保留一定数量的空闲子进程,以便它可以快速处理新的传入客户端请求。MinSpareServer和MaxSpareServers控制备用进程数的下限和上限。即当备用服务器的数量低于MinSpareServers时,Tinyproxy将在后台开始分配新的备用进程,当备用进程数超过MaxSpareServers时,Tinyproxy将终止额外的进程。 - StartServers
最初启动的服务器数量。通常应将此值设置为MinSpareServers和MaxSpareServers之间的值。 - MaxRequestsPerChild
这限制了子进程在被杀死之前将处理的连接数。默认值为0,禁用此功能。此选项意味着在内存泄漏问题的情况下采取紧急措施。在这种情况下,将MaxRequestsPerChild设置为例如1000或10000可能有用。 - 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"
RFC 2616要求代理向HTTP请求添加Via标头,但使用真实主机名可能是一个安全问题。如果存在ViaProxyname选项,则其字符串值将用作Via标头中的主机名。否则,将使用服务器的主机名。
如果设置为yes,则Tinyproxy不会将Via标头添加到请求中。这实际上使Tinyproxy进入隐身模式。请注意,RFC 2616要求代理设置Via标头,因此通过启用此选项,您可以破坏合规性。除非你知道自己在做什么,否则不要禁用Via标头……
Tinyproxy支持基于URL或域过滤网站。此选项指定包含过滤规则的文件的位置,每行一个规则。
如果此布尔选项设置为”Yes”或”On”,则会对URL而不是域执行过滤。默认设置是根据域进行过滤。
如果此布尔选项设置为”Yes”,则扩展POSIX正则表达式用于匹配过滤规则。默认是使用基本的POSIX正则表达式。
如果此布尔选项设置为”Yes”,则以区分大小写的方式匹配过滤规则。默认设置是不区分大小写。
默认过滤策略是允许过滤规则不匹配的所有内容。将FilterDefaultDeny设置为Yes会更改策略,但会拒绝除过滤规则匹配的域或URL之外的所有内容。
如果存在Anonymous关键字,则启用匿名代理。允许使用Anonymous列出的标头,而拒绝所有其他标头。如果不存在Anonymous关键字,则允许所有标头通过。您必须在标题周围添加引号。
大多数网站都需要启用Cookie才能使其正常工作,因此如果您访问这些网站,则需要允许Cookie。
示例:
Anonymous "Host" Anonymous "Authorization" Anonymous "Cookie"
此选项可用于指定CONNECT方法允许的端口。如果未找到ConnectPort行,则允许所有端口。要完全禁用CONNECT,请包含一个值为0的ConnectPort行。
配置一个或多个ReversePath指令以启用反向代理支持。通过反向代理,可以使许多站点看起来像是单个站点的一部分。
如果取消注释以下两个指令并在您自己的计算机上通过端口8888运行Tinyproxy,则可以访问example.com,使用http:// localhost:8888/example /。
ReversePath "/example/" "http://www.example.com/"
当使用Tinyproxy作为反向代理时,强烈建议通过将此布尔选项设置为是来关闭普通代理。
将此选项设置为是,使Tinyproxy使用cookie来跟踪反向代理映射。如果您需要撤消具有绝对链接的代理站点,则必须使用此选项。
用于访问此反向代理的URL.URL用于重写HTTP重定向,以便它们不会转义代理。如果您有一系列反向代理,则需要将最外面的URL放在此处(最终用户在其浏览器中键入的地址)。如果未设置此选项,则不会重写重定向。
支持
- 您可以通过github问题报告新错误或建议功能。
- Tinyproxy开发人员在irc.freenode.net上的#tinyproxy中闲逛。
参考资料
-- EOF --
本文最后修改于6年前 (2019-05-11)