Web 代理软件转发 HTTP 请求时并不会改变数据流量。它们可以配置成透明代理,而无需客户端配置。它们还可以作为反向代理放在网站的前端;这样缓存服务器可以为一台或多台 web 服务器提供无限量的用户服务。
网站代理功能多样,有着宽泛的用途:从缓存页面、DNS 和其他查询,到加速 web 服务器响应、降低带宽消耗。代理软件广泛用于大型高访问量的网站,比如纽约时报、卫报, 以及社交媒体网站如 Twitter、Facebook 和 Wikipedia。
页面缓存已经成为优化单位时间内所能吞吐的数据量的至关重要的机制。好的 Web 缓存还能降低延迟,尽可能快地响应页面,让终端用户不至于因等待内容的时间过久而失去耐心。它们还能将频繁访问的内容缓存起来以节省带宽。如果你需要降低服务器负载并改善网站内容响应速度,那缓存软件能带来的好处就绝对值得探索一番。
为深入探查 Linux 下可用的相关软件的质量,我列出了下边5个优秀的开源 web 代理工具。它们中有些功能完备强大,也有几个只需很低的资源就能运行。
Squid 是一个高性能、开源的代理缓存服务器和 Web 缓存进程,支持 FTP、Internet Gopher、HTTPS 和 SSL 等多种协议。它通过一个非阻塞的、I/O 事件驱动的单一进程处理所有的 IPV4 或 IPV6 协议请求。
Squid 由一个主服务程序 squid,和 DNS 查询程序 dnsserver,另外还有一些可选的请求重写、执行认证程序组件,及一些管理和客户端工具构成。
Squid 提供了丰富的访问控制、认证和日志环境, 用于开发 web 代理和内容服务网站应用。
其特性包括:
Privoxy (Privacy Enhancing Proxy) 是一个非缓存类 Web 代理软件,它自带的高级过滤功能可以用来增强隐私保护、修改页面内容和 HTTP 头部信息、访问控制,以及去除广告和其它招人反感的互联网垃圾。Privoxy 的配置非常灵活,能充分定制已满足各种各样的需求和偏好。它支持单机和多用户网络两种模式。
Privoxy 使用 action 规则来处理浏览器和远程站点间的数据流。
其特性包括:
高度配置化——可以完全定制你的配置
广告拦截
Cookie 管理
支持“Connection: keep-alive”。可以无视客户端配置而保持外发的持久连接
支持 IPv6
标签化 ( Tagging ) ,允许按照客户端和服务器的请求头进行处理
作为 拦截 ( intercepting ) 代理器运行
巧妙的 动作 ( action ) 和过滤机制用来处理服务器和客户端的 HTTP 头部
可以与其他代理软件链式使用
整合了基于浏览器的配置和控制工具,能在线跟踪规则和过滤效果,可远程开关
页面过滤(文本替换、根据尺寸大小删除广告栏, 隐藏的“web-bugs”元素和 HTML 容错等)
模块化的配置使得标准配置和用户配置可以存放于不同文件中,这样安装更新就不会覆盖用户的个性化设置
配置文件支持 Perl 兼容的正则表达式,以及更为精妙和灵活的配置语法
GIF 去动画
旁路处理大量 点击跟踪 ( click-tracking ) 脚本(避免脚本重定向)
大多数代理生成的页面(例如 “访问受限” 页面)可由用户自定义HTML模板
自动监测配置文件的修改并重新读取
大多数功能可以基于每个站点或每个 URL 位置来进行控制
网站: www.privoxy.org
开发: Fabian Keil(开发领导者), David Schmidt, 和众多其他贡献者
授权: GNU GPL v2
版本号: 3.4.2
Varnish Cache 是一个为性能和灵活性而生的 web 加速器。它新颖的架构设计能带来显著的性能提升。根据你的架构,通常情况下它能加速响应速度300-1000倍。Varnish 将页面存储到内存,这样 web 服务器就无需重复地创建相同的页面,只需要在页面发生变化后重新生成。页面内容直接从内存中访问,当然比其他方式更快。
此外 Varnish 能大大提升响应 web 页面的速度,用在任何应用服务器上都能使网站访问速度大幅度地提升。
按经验,Varnish Cache 比较经济的配置是1-16GB内存+ SSD 固态硬盘。
其特性包括:
Polipo 是一个开源的 HTTP 缓存代理,只需要非常低的资源开销。
它监听来自浏览器的 web 页面请求,转发到 web 服务器,然后将服务器的响应转发到浏览器。在此过程中,它能优化和整形网络流量。从本质来讲 Polipo 与 WWWOFFLE 很相似,但其实现技术更接近于 Squid。
Polipo 最开始的目标是作为一个兼容 HTTP/1.1 的代理,理论它能在任何兼容 HTTP/1.1 或更早的 HTTP/1.0 的站点上运行。
其特性包括:
HTTP 1.1、IPv4 & IPv6、流量过滤和隐私保护增强
如确认远程服务器支持的话,则无论收到的请求是管道处理过的还是在多个连接上同时收到的,都使用 HTTP/1.1 管道 ( pipelining )
下载被中断时缓存起始部分,当需要续传时用 区间 ( Range ) 请求来完成下载
将 HTTP/1.0 的客户端请求升级为 HTTP/1.1,然后按照客户端支持的级别进行升级或降级后回复
全面支持 IPv6 (作用域(链路本地)地址除外)
作为 IPv4 和 IPv6 网络的网桥
内容过滤
能使用 Poor Man 多路复用技术 ( Poor Man’s Multiplexing ) 降低延迟
支持 SOCKS 4 和 SOCKS 5 协议
HTTPS 代理
扮演透明代理的角色
可以与 Privoxy 或 tor 一起运行
开发: Juliusz Chroboczek, Christopher Davis
授权: MIT License
版本号: 1.1.1
Tinyproxy 是一个轻量级的开源 web 代理守护进程,其设计目标是快而小。它适用于需要完整 HTTP 代理特性,但系统资源又不足以运行大型代理的场景,比如嵌入式部署。
Tinyproxy 对小规模网络非常有用,这样的场合下大型代理会使系统资源紧张,或有安全风险。Tinyproxy 的一个关键特性是其缓冲连接的理念。从效果上看, Tinyproxy 对服务器的响应进行了高速缓冲,然后按照客户端能够处理的最高速度进行响应。该特性极大的降低了网络延滞带来的问题。
特性:
易于修改
隐匿模式 - 定义哪些 HTTP 头允许通过,哪些又会被拦截
支持 HTTPS - Tinyproxy 允许通过 CONNECT 方法转发 HTTPS 连接,任何情况下都不会修改数据流量
远程监控 - 远程访问代理统计数据,让你能清楚了解代理服务当前的忙碌状态
平均负载监控 - 通过配置,当服务器的负载接近一定值后拒绝新连接
访问控制 - 通过配置,仅允许指定子网或 IP 地址的访问
安全 - 运行无需额外权限,减小了系统受到威胁的概率
基于 URL 的过滤 - 允许基于域和URL的黑白名单
透明代理 - 配置为透明代理,这样客户端就无需任何配置
代理链 - 在流量出口处采用上游代理服务器,而不是直接转发到目标服务器,创建我们所说的代理链
隐私特性 - 限制允许从浏览器收到的来自 HTTP 服务器的数据(例如 cookies),同时限制允许通过的从浏览器到 HTTP 服务器的数据(例如版本信息)
低开销 - 使用 glibc 内存开销只有2MB,CPU 负载按并发连接数线性增长(取决于网络连接速度)。 Tinyproxy 可以运行在老旧的机器上而无需担心性能问题。
开发: Robert James Kaes和其他贡献者
授权: GNU GPL v2
版本号: 1.8.3
via: http://www.linuxlinks.com/article/20151101020309690/WebDelivery.html