五大开源Web代理服务器的横向点评

Web 代理软件转发 HTTP 请求时并不会改变数据流量。它们可以配置成透明代理,而无需客户端配置。它们还可以作为反向代理放在网站的前端;这样缓存服务器可以为一台或多台 web 服务器提供无限量的用户服务。

网站代理功能多样,有着宽泛的用途:从缓存页面、DNS 和其他查询,到加速 web 服务器响应、降低带宽消耗。代理软件广泛用于大型高访问量的网站,比如纽约时报、卫报, 以及社交媒体网站如 Twitter、Facebook 和 Wikipedia。

页面缓存已经成为优化单位时间内所能吞吐的数据量的至关重要的机制。好的 Web 缓存还能降低延迟,尽可能快地响应页面,让终端用户不至于因等待内容的时间过久而失去耐心。它们还能将频繁访问的内容缓存起来以节省带宽。如果你需要降低服务器负载并改善网站内容响应速度,那缓存软件能带来的好处就绝对值得探索一番。

为深入探查 Linux 下可用的相关软件的质量,我列出了下边5个优秀的开源 web 代理工具。它们中有些功能完备强大,也有几个只需很低的资源就能运行。

1.Squid

Squid 是一个高性能、开源的代理缓存服务器和 Web 缓存进程,支持 FTP、Internet Gopher、HTTPS 和 SSL 等多种协议。它通过一个非阻塞的、I/O 事件驱动的单一进程处理所有的 IPV4 或 IPV6 协议请求。

Squid 由一个主服务程序 squid,和 DNS 查询程序 dnsserver,另外还有一些可选的请求重写、执行认证程序组件,及一些管理和客户端工具构成。

Squid 提供了丰富的访问控制、认证和日志环境, 用于开发 web 代理和内容服务网站应用。

其特性包括:

◆Web 代理

◆通过缓存来降低访问时间和带宽使用

◆将元数据和访问特别频繁的对象缓存到内存中

◆缓存 DNS 查询

◆支持非阻塞的 DNS 查询

◆实现了失败请求的未果缓存

◆Squid 缓存可架设为层次结构,或网状结构以节省额外的带宽

◆通过广泛的访问控制来执行网站访问策略

◆隐匿请求,如禁用或修改客户端 HTTP 请求头特定属性

◆反向代理

◆媒体范围media-range限制

支持 SSL

◆支持 IPv6

◆错误页面的本地化 - Squid 可以根据访问者的语言选项对每个请求展示本地化的错误页面

◆连接固定Connection Pinning (用于 NTLM Auth Passthrough) - 一种允许 Web 服务器通过 Web 代理使用Microsoft NTLM 安全认证替代 HTTP 标准认证的方案

◆支持服务质量 QoS, Quality of Service流

◆选择一个 TOS/Diffserv 值来标记本地命中

◆选择一个 TOS/Diffserv 值来标记对端命中

◆选择性地仅标记同级或上级请求

◆允许任意发往客户端的 HTTP 响应保持由远程服务器处响应的 TOS 值

◆对收到的远程服务器的 TOS 值,在复制之前对指定位进行掩码操作,再发送到客户端

◆SSL Bump (用于 HTTPS 过滤和适配) - Squid-in-the-middle,在 CONNECT 方式的 SSL 隧道中,用配置化的客户端和服务器端证书,对流量进行解密和加密

◆支持适配模块

◆ICAP 旁路和重试增强 - 通过完全的旁路和动态链式路由扩展 ICAP,来处理多多个适应性服务。

◆支持 ICY 流式协议 - 俗称 SHOUTcast 多媒体流

◆动态 SSL 证书生成

支持 ICAP 协议 (Internet Content Adaptation Protocol)

◆完整的请求日志记录

◆匿名连接

◆网站:www.squid-cache.org

◆开发:美国国家应用网络研究实验室(NLANR)和网络志愿者

◆授权:GNU GPL v2

◆版本号:4.0.1

  2.Privoxy

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

3.Varnish Cache

Varnish Cache 是一个为性能和灵活性而生的 web 加速器。它新颖的架构设计能带来显著的性能提升。根据你的架构,通常情况下它能加速响应速度300-1000倍。Varnish 将页面存储到内存,这样 web 服务器就无需重复地创建相同的页面,只需要在页面发生变化后重新生成。页面内容直接从内存中访问,当然比其他方式更快。

此外 Varnish 能大大提升响应 web 页面的速度,用在任何应用服务器上都能使网站访问速度大幅度地提升。

按经验,Varnish Cache 比较经济的配置是1-16GB内存+ SSD 固态硬盘。

其特性包括:

◆新颖的设计

◆VCL - 非常灵活的配置语言。VCL 配置会转换成 C,然后编译、加载、运行,灵活且高效

◆能使用 round-robin 轮询和随机分发两种方式来负载均衡,两种方式下后端服务器都可以设置权重

◆基于 DNS、随机、散列和客户端 IP 的分发器Director

◆多台后端主机间的负载均衡

◆支持 Edge Side Includes,包括拼装压缩后的 ESI 片段

◆重度多线程并发

◆URL 重写

◆单 Varnish 能够缓存多个虚拟主机

◆日志数据存储在共享内存中

◆基本的后端服务器健康检查

◆优雅地处理后端服务器“挂掉”

◆命令行界面的管理控制台

◆使用内联 C 语言来扩展 Varnish

◆可以与 Apache 用在相同的系统上

◆单个系统可运行多个 Varnish

◆支持 HAProxy 代理协议。该协议在每个收到的 TCP 请求——例如 SSL 终止过程中——附加一小段 http 头信息,以记录客户端的真实地址

◆冷热 VCL 状态

◆可以用名为 VMOD 的 Varnish 模块来提供插件扩展

◆通过 VMOD 定义后端主机

◆Gzip 压缩及解压

◆HTTP 流的通过和获取

◆神圣模式和优雅模式。用 Varnish 作为负载均衡器,神圣模式下可以将不稳定的后端服务器在一段时间内打入黑名单,阻止它们继续提供流量服务。优雅模式允许 Varnish 在获取不到后端服务器状态良好的响应时,提供已过期版本的页面或其它内容。

◆实验性支持持久化存储,无需 LRU 缓存淘汰

网站: www.varnish-cache.org

开发: Varnish Software

授权: FreeBSD

版本号: 4.1.0

4.Polipo

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 一起运行

网站:www.pps.univ-paris-diderot.fr/~jch/software/polipo/

◆开发:Juliusz Chroboczek, Christopher Davis

◆授权:MIT License

◆版本号:1.1.1

5.Tinyproxy

Tinyproxy 是一个轻量级的开源 web 代理守护进程,其设计目标是快而小。它适用于需要完整 HTTP 代理特性,但系统资源又不足以运行大型代理的场景,比如嵌入式部署。

Tinyproxy 对小规模网络非常有用,这样的场合下大型代理会使系统资源紧张,或有安全风险。Tinyproxy 的一个关键特性是其缓冲连接的理念。从效果上看, Tinyproxy 对服务器的响应进行了高速缓冲,然后按照客户端能够处理的最高速度进行响应。该特性极大的降低了网络延滞带来的问题。

特性:

◆易于修改

◆隐匿模式 - 定义哪些 HTTP 头允许通过,哪些又会被拦截

◆支持 HTTPS - Tinyproxy 允许通过 CONNECT 方法转发 HTTPS 连接,任何情况下都不会修改数据流量

◆远程监控 - 远程访问代理统计数据,让你能清楚了解代理服务当前的忙碌状态

◆平均负载监控 - 通过配置,当服务器的负载接近一定值后拒绝新连接

◆访问控制 - 通过配置,仅允许指定子网或 IP 地址的访问

◆安全 - 运行无需额外权限,减小了系统受到威胁的概率

◆基于 URL 的过滤 - 允许基于域和URL的黑白名单

◆透明代理 - 配置为透明代理,这样客户端就无需任何配置

◆代理链 - 在流量出口处采用上游代理服务器,而不是直接转发到目标服务器,创建我们所说的代理链

◆隐私特性 - 限制允许从浏览器收到的来自 HTTP 服务器的数据(例如 cookies),同时限制允许通过的从浏览器到 HTTP 服务器的数据(例如版本信息)

◆低开销 - 使用 glibc 内存开销只有2MB,CPU 负载按并发连接数线性增长(取决于网络连接速度)。 Tinyproxy 可以运行在老旧的机器上而无需担心性能问题。

◆网站:banu.com/tinyproxy

◆开发:Robert James Kaes和其他贡献者

◆授权:GNU GPL v2

◆版本号:1.8.3

【编辑推荐】

  1. 谁是最佳的Windows 10 Web浏览器?让基准测试来说话
  2. 确保开源项目在GitHub上取得成功的五个关键
  3. Facebook即将关闭Parse服务,并将其代码开源
  4. 开源与创业需要注意的关键点有哪些
  5. 十大开源安卓应用程序的开发框架
时间: 2024-10-07 18:53:23

五大开源Web代理服务器的横向点评的相关文章

国内外php主流开源cms、商城、点评、SNS、DIGG、RSS、分类信息、Wiki汇总

网上商城源代码 源码之家- www.mycodes.net 酷网动力 www.aspcool.com 源码联盟 www.aspsun.com 源码天下 www.pccode.net http://blog.chinaunix.net/space.php?uid=20787846&do=blog&id=1842324      2009年快完了,今年国内PHP开源CMS内容管理系统从程序框架,模版加载到程序功能上都有很大的进步,大部分都采用了自定义模块,自定义模型的方式,同时提供各个CMS都

用C#实现WEB代理服务器

用C#实现Web代理服务器 代理服务程序是一种广泛使用的网络应用程序.代理程序的种类非常多,根据协议不同可以分成HTTP代理服务程序.FTP代理服务程序等,而运行代理服务程序的服务器也就相应称为HTTP代理服务器和FTP代理服务器.本文将介绍的Web代理服务程序代理的是HTTP协议. 一.网络代理程序的优点 代理服务所起的是一个桥的作用,它是网络信息的中转站.在网络中应用代理服务一般是基于以下几个原因: (1)充分利用IP地址资源.在局域网中,一般对外的IP地址都是非常有限的,为了保证局域网内部

你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题

前段时间做项目由于采用的MD设计,所以必须要使用RecyclerView全面代替ListView.但是开发中遇到了需要实现RecyclerView上拉加载.下拉刷新和添加Header以及Footer等需求问题,现将问题解决中用到的五大开源项目总结下来,方便他人. 首先介绍下RecyclerView,RecyclerView相比ListView增加了很多新特性: ? Adapter中的ViewHolder模式 - 对于ListView来说,通过创建ViewHolder来提升性能并不是必须的.因为L

JAVA首选五款开源Web开发框架

Spring Spring是一个开源的Java/Java EE全功能栈应用程序框架,在JavaEE社区中非常受欢迎,以Apache许可证形式发布,也有.NET平台上的移植版本. Struts2 Struts2是一个web应用框架.它不是一个Struts的新的发布版本,而是一个全新的框架.Struts2是第二代基于Model-View-Controller (MVC)模型的web应用框架.Struts2是java企业级web应用的可扩展性的框架.它是WebWork和Struts社区合并后的产物.这

bobo腾讯开源web图像处理引擎:AlloyImage

AlloyImage是腾讯Web前端 AlloyTeam 近日推出了最新开源项目.一个基于HTML5技术,使用Javascript语言开发的Web的在线图像处理引擎 (简称AI),以及一个在线Web图像处理平台AlloyPhoto(简称AP).集成了一些方便快捷的图像处理API,您可以将它简单快捷的引用到您的Web网页中. AlloyImage主要使用html5的canvas技术,并在多图层(layer)处理方面做了创新性的尝试,不仅如此,在技术实现层面,其架构方便扩展,使用者可以很容易写出现一

浅谈五大Python Web框架

http://www.csdn.net/article/2011-02-17/292058 导读:作者飞龙写了一篇<浅谈Python Web框架>,文中他介绍了几个Python Web框架和自己对选择框架的分析.在他看来,用Django来快速开发一些Web运用是很不错的选择.以下是文章内容: 说到Web Framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界,各种micro-framework.framework不可胜数,不完全列表见: http://wik

Tiny HTTPd 开源web服务器搭建过程及简要分析

开源web服务器,Tiny HTTPd,纯c编写,作者:   jdavidb.服务器小巧,轻便,结构简单,将搭建web服务器的原理阐述的很清楚,对学习很有帮助.下载地址 测试环境:Ubuntu 14.04.2 由于服务器不是默认为linux开发的,所以需要经过简单的修改才能在linux上运行起来. 1.修改Makefile文件,将gcc -W -Wall -lsocket -lpthread -o httpd httpd.c 修改为:gcc -W -Wall  -o httpd httpd.c

Web2py是一个用Python语言编写的免费的开源Web框架

Zope 2是一款基于Python的Web应用框架,是所有Python Web应用程序.工具的鼻祖,是Python家族一个强有力的分支.Zope 2的"对象发布"系统非常适合面向对象开发方法,并且可以减轻开发者的学习曲线,还可以帮助你发现应用程序里一些不好的功能. Web2py是一个用Python语言编写的免费的开源Web框架,旨在敏捷快速的开发Web应用,具有快速.可扩展.安全以及可移植的数据库驱动的应用,遵循LGPLv3开源协议. Web2py提供一站式的解决方案,整个开发过程都可

浅谈C#实现Web代理服务器的几大步骤

代理服务程序是一种广泛使用的网络应用程序.代理程序的种类非常多,根据协议不同可以分成HTTP代理服务程序.FTP代理服务程序等,而运行代理服务程序的服务器也就相应称为HTTP代理服务器和FTP代理服务器.本文将介绍用C#的Web代理服务程序代理的是HTTP协议. 一.网络代理程序的优点 代理服务所起的是一个桥的作用,它是网络信息的中转站.在网络中应用代理服务一般是基于以下几个原因: (1)充分利用IP地址资源.在局域网中,一般对外的IP地址都是非常有限的,为了保证局域网内部的主机都能够访问互联网