Tinyproxy是一个轻量级的用于POSIX操作系统的http/https代理守护进程。在设计之初就遵循着更快并且更小的原则。在相关的运用案例中,它是一种理想的解决方案,例如在一个需要全部HTTP代理特性的嵌入式部署的案例中。然而,对于需要更大的代理案例来说,它是不可用的。
Tinyproxy本身是小巧的,几乎不需要占用系统资源。安装后,内存占用通常在2M左右,CPU负载随同步连接的数量线性增加(取决于连接的速度)。因此,Tinyproxy可以在一台旧机器上运行,也可以在网络设备上运行,比如基于linux的宽带路由器,而不会对性能产生任何明显的影响。
安装环境:阿里云CentOS7 香港服务器
1. 安装 TinyProxy
在Red Hat Enterprise Linux或其衍生产品(如CentOS)上,可以通过运行yum install tinyproxy从EPEL存储库安装Tinyproxy。
yum -y install tinyproxy
2. 配置 TinyProxy
vim /etc/tinyproxy/tinyproxy.conf
修改 Port 端口,默认为 8888
Port 12801
注释掉 Allow,表示允许所有人访问代理
#Allow 127.0.0.1
隐藏掉Via请求头部,去掉下面的注释
DisableViaHeader Yes
更多配置项,下面是列举一些配置文件默认的,不需要配置:
PidFile "/var/run/tinyproxy/tinyproxy.pid"
LogFile "/var/log/tinyproxy/tinyproxy.log"
LogLevel Info
MaxClients 100
MinSpareServers 5
MaxSpareServers 20
StartServers 10
3. 启动 TinyProxy
systemctl start tinyproxy.service
更多命令如下:
systemctl restart tinyproxy.service
systemctl stop tinyproxy.service
systemctl status tinyproxy.service
systemctl enable tinyproxy.service
4. 关闭防火墙或开放端口访问
方式1:关闭防火墙
/etc/init.d/iptables stop
方式2:开放端口访问
iptables -A INPUT -p tcp --dport 12801 -j ACCEPT
重启防火墙
/etc/init.d/iptables restart
注意:若采用的阿里云、腾讯云、AWS等云服务器,记得要在安全策略里开放端口号
5. 验证生效
1)命令行测试验证(服务器本地测试)
使用TinyProxy拉取google.com的页面信息:
curl -x 127.0.0.1:12801 google.com
可以看到成功拉取了谷歌的页面信息,说明我们的配置是成功。
2)Firefox测试(本机测试)
打开火狐浏览器,选择:选项-网络代理-设置,进入配置界面,根据下图进行配置:
配置完成后,我们使用百度搜索IP,搜索结果如下:
IP地址是我们服务器的地址,说明代理正常访问。然而,如果我们访问谷歌,会得到如下页面:
我们无法访问谷歌,不但如此,其他类似的网站我们也是无法访问的。这是为什么?首先,我们看下面的图,当我们想要访问外网的时候,这个请求数据包必然会经过防火墙的检查:
现在我们使用代理,但是依然需要经过防火墙的检查:
由于客户端与TinyProxy之间的请求数据是没有加密的,所以我们无法通过检查。
有人可能疑问,HTTPS是加密的请求,那么为什么不能绕过防火墙呢?
这是因为客户端在进行加密通信以前,需要进行连接握手。在连接握手时,身份认证证书信息(即服务器的公钥)是明文传输的,墙此时就会阻断特定证书的加密连接。
参考链接:
https://segmentfault.com/a/1190000011532677
http://blog.51cto.com/tianshili/1733869
http://tinyproxy.github.io/