`

五大开源 Web 代理服务器横评:Squid、Privoxy、Varnish、Polipo、Tinyproxy

阅读更多

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

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

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

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

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[1]

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

  • 授权: GNU GPL v2

  • 版本号: 4.0.1

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[2]

  • 开发: Fabian Keil(开发领导者), David Schmidt, 和众多其他贡献者

  • 授权: GNU GPL v2

  • 版本号: 3.4.2

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 缓存淘汰

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

 

Tinyproxy

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

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

特性:

  • 易于修改

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

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

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

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

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

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

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

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

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

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

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

 

http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=413416318&idx=2&sn=fa2868344ddb0226d8175aba0ff76fea&3rd=MzA3MDU4NTYzMw==&scene=6#rd

分享到:
评论

相关推荐

    网络管理与维护 实验报告(九):squid代理服务器.doc

    网络管理与维护 实验报告(九):squid代理服务器.doc

    基于Linux的Squid代理服务器配置.doc

    Squid 代理服务器是一种流行的开源代理服务器软件,广泛应用于 Linux 操作系统中。该软件能够帮助用户更好地管理和控制网络流量,提高网络的安全性和可靠性。 1.1 代理服务器的定义 代理服务器是一种特殊的网络...

    Squid代理服务器原理

    Squid代理服务器是一款广泛应用的开源HTTP代理缓存软件,其主要作用是提高网络访问速度,减少网络带宽消耗,并且能够实现访问控制和内容过滤等功能。在企业网络环境中,Squid通常作为网络访问的中介,帮助客户端处理...

    squid代理服务器泄露客户ip和服务器信息的解决.pdf

    squid 代理服务器工作原理是,客户端将请求发送到 squid 代理服务器,squid 代理服务器然后将请求转发到目标 web 服务器,web 服务器端将响应发送回 squid 代理服务器,squid 代理服务器再将响应发送回客户端。...

    squid、varnish、ngx_cache的性能测试对比报告

    首先,从测试环境来看,本次测试所使用的Squid、Ngx_cache(也就是Varnish)、Nginx_cache均运行在具有单硬盘资源的服务器上,并为缓存分配了180G的存储空间。这意味着测试结果更侧重于考察三者在单盘存储条件下的...

    透明代理服务器搭建(linux搭建squid代理)

    Squid 是一个流行的开源代理服务器软件,它可以在 Linux 和 Unix 环境中运行。Squid 代理服务器可以将 HTTP 请求转发到 Internet 上,从而加速 Internet 访问速度。 为什么需要透明代理服务器? 透明代理服务器...

    proxyServer squid / varnish / apache traffic server / ATS

    proxyServer squid / varnish / apache traffic server / ATS 这篇博文讨论了代理服务器的基本概念,并重点介绍了Squid、Varnish和Apache Traffic Server(ATS)这三种流行的代理缓存服务器软件。下面将详细阐述这些...

    Linux搭建Squid透明代理及squid+icap环境

    Squid是一款广泛应用的开源代理缓存服务器,它可以帮助提高网络访问速度,减轻服务器负载。透明代理则是指用户在使用网络时,无感知地通过代理服务器进行访问。而Squid与ICAP(Internet Content Adaptation Protocol...

    squid缓存服务器的研究

    - **反向代理缓冲服务器**:位于 Web 服务器和 Internet 之间,负责处理所有针对 Web 服务器的请求。通过缓存静态内容减轻原始服务器负担,提高响应速度。 #### 五、Squid 的主要组成部分 - **服务名**:squid - *...

    Squid cache(简称为Squid)代理缓存服务器

    Squid Cache,通常简称为Squid,是一款广泛应用的开源代理服务器和Web缓存系统。它基于GNU通用公共许可证(GPL),允许用户免费获取、使用、修改和分发源代码。这款强大的软件旨在提高网络性能,通过在本地存储经常...

    代理服务器.ppt

    Squid代理服务器可以根据不同的工作模式进行配置,例如普通代理、 透明代理和反向代理。普通代理可以缓存访问的资源,提高访问速度和安全性。 透明代理可以将客户的网络访问请求转发给目标服务器,而不需要客户端...

    squid编译安装及配置详解.pdf

    Squid 是一个流行的开源代理服务器软件,能够缓存常见的 Internet 对象,减少网络带宽的使用,提高用户的访问速度。本资源将指导用户从源代码包编译安装 Squid,并对其进行基本配置。 一、安装 Squid 1. 下载 ...

    Squid Windows版架设二级代理服务器

    ### Squid Windows版架设二级代理服务器 #### 概述 在本文中,我们将详细介绍如何在Windows环境下配置Squid作为二级代理服务器的过程。通过设置Squid为二级代理,可以实现更高效的网络访问和资源管理。下面将从...

    高效配置的Linux代理服务器Squid介绍

    Squid是一款强大的开源代理服务器,适用于Linux及其他多种操作系统,如AIX、Digital Unix、FreeBSD、HP-UX、Irix、NetBSD、Nextstep、SCO和Solaris等。其设计目的是提高网络性能,通过缓存HTTP、FTP、gopher、SSL和...

    Squid缓存代理服务器的安装与配置(普通代理 透明代理 反向代理)

    Squid缓存代理服务器是一种流行的代理服务器和Web缓存服务器软件,广泛应用于提高Web服务器速度、缓存万维网、域名系统和其他网络搜索、帮助网络安全等方面。Squid服务器主要设计用于在Unix一类系统运行。 Squid...

    毕业设计(论文)-基于Linux的Squid代理服务器的架设.doc

    基于 Linux 的 Squid 代理服务器的架设 本论文旨在设计和实现基于 Linux 的 Squid 代理服务器,旨在提高网络访问速度和降低带宽占用。论文首先介绍了 Linux 操作系统的优点和 Squid 代理服务器的工作原理,然后详细...

    squid代理服务软件

    Squid 是一款强大的开源缓存代理服务器,常用于网络数据的高速缓存和网络访问控制。它能够显著提高网络性能,减少带宽消耗,并提供安全的互联网访问管理。Squid 支持多种协议,包括 HTTP、HTTPS、FTP 和 FTPS,使其...

    构建Linux下的Squid代理服务器.pdf

    Squid是一个开源的高性能代理缓存服务器,适用于多种操作系统,包括Linux。它主要用于提高网络访问速度,减少网络流量,以及对网络活动进行监控和管理。 在Linux环境中安装Squid,通常需要以下步骤: 1. 更新系统...

Global site tag (gtag.js) - Google Analytics