反向代理服务器是一种部署在客户端和后端/原始服务器之间的代理服务器,例如,HTTP服务器,如NGINX, Apache等。或用Nodejs、Python、Java、Ruby、PHP和许多其他编程语言编写的应用服务器。
网关或中间层服务器,客户端请求,将其传递到一个或多个后端服务器,然后获取来自服务器的响应,并将其返回到客户端,从而使它看起来好像起源于反向代理服务器本身的内容。
一般来说,反向代理服务器是一种面向内部的代理,用作“前端”来控制和保护私有网络上对后端服务器的访问:它通常部署在网络防火墙后面。
它帮助后端服务器实现匿名性,以增强其安全性。在IT基础设施中,反向代理还可以作为应用程序防火墙、负载均衡器、TLS终止器、web加速器(通过缓存静态和动态内容)等功能。
在本文中,我们将介绍您可以在Linux系统上使用的8个顶级开源反向代理服务器。
目录
1. HAProxy
HAProxy是高可用性代理(High Availability Proxy)的缩写,它是一个免费的、开源的、非常快速、可靠和一流的负载平衡器和代理软件,用于TCP和基于http的应用程序,为高可用性而构建。
HAProxy是HTTP反向代理、TCP代理和规范化器、SSL/TLS终止/启动器/卸载程序、缓存代理、HTTP压缩卸载程序、流量调节器、基于内容的开关、FastCGI网关等等。它还可以防止DDoS和服务滥用。
它由一个事件驱动的非阻塞引擎提供动力,该引擎结合了一个非常快的I/O层和一个基于优先级的多线程调度器,这使它能够轻松处理成千上万的并发连接。值得注意的是,HAProxy使用PROXY协议将客户机的连接信息传递到后端或源服务器,以便应用程序获得所有相关信息。
HAProxy的一些基本特性包括代理、SSL支持、监控服务器状态和它自己的状态、高可用性、负载平衡、粘性(即使在不同事件中也要在同一服务器上维护一个访问者)、内容切换、HTTP重写和重定向、服务器保护、日志、统计数据等等。
2. Nginx
Nginx一个免费的、开源的、高性能的、非常流行的HTTP服务器和反向代理。它还可以作为IMAP/POP3代理服务器。NGINX以其高性能、稳定性、丰富的特性集、简单灵活的配置以及低资源消耗(特别是内存占用)而闻名。
就像HAProxy一样,Nginx有一个事件驱动的架构,所以它在处理成千上万的并发连接时没有问题,因为它使用了HAProxy的PROXY协议。
Nginx支持使用ngx_http_proxy_module模块缓存加速反向代理,该模块允许通过HTTP以外的协议将请求传递到另一个服务器,如FastCGI, uwsgi, SCGI和memcached。
重要的是,它支持负载平衡和容错,这是大规模分布式计算系统的关键方面。ngx_http_upstream_module模块允许定义一组后端服务器来分发来自客户端的请求。这使得您的应用程序在响应时间和吞吐量方面更加健壮、可用和可靠,具有高度可伸缩性。此外,在安全性方面,它支持SSL/TLS终止和许多其他安全特性。
3. Varnish HTTP Cache
Varnish HTTP Cache(或Varnish Cache或简称Varnish)是一个免费的、开源的、高性能的、非常流行的缓存反向代理软件,它被称为web应用程序加速器,设计用于通过服务器端缓存提高HTTP性能。
它部署在客户端和HTTP web服务器或应用服务器之间;每次客户端请求信息或资源从web服务器,清漆存储信息的副本,所以下次相同的客户机请求信息,清漆将不发送一个请求到网络服务器从而减少服务器上的负载和反过来加速web内容交付。
Varnish使用一种灵活的配置语言,称为Varnish configuration language (VLC),它使系统管理员能够配置应该如何处理传入请求、应该提供什么内容、从哪里提供以及应该如何更改请求或响应等。
varnish也是可扩展的——它可以使用varnish模块(vmod)进行扩展,用户可以编写自己的自定义模块或使用社区提供的模块。
Varnish的主要限制是它缺乏对SSL/TLS的支持。启用HTTPS的唯一方法是在其前面部署一个SSL/TLS终止程序或卸载程序,如HAProxy或NGINX。
4. Træfɪk
Træfɪk(发音为Traffic)是一个免费的、开源的、现代的、快速的HTTP反向代理和负载均衡器,用于部署支持多种负载均衡算法的微服务。它可以与各种提供商(或服务发现机制或编配工具)接口,如Kubernates, Docker, Etcd, Rest API, Mesos/Marathon, Swarm和Zookeper。
它的可爱特性是能够自动和动态地管理配置,从而为您的服务发现正确的配置。它通过扫描您的基础架构来查找相关信息,并发现哪个服务服务于哪个来自外部世界的请求。供应商告诉Træfɪk你的应用程序或微型服务位于哪里。
tresfɪk的其他功能支持WebSockets, HTTP/2,和GRPC,热加载(不断更新其配置而不重启),HTTPS使用Let’s Encrypt证书(通配符证书支持),并公开一个REST API。它还保存访问日志,并提供度量(Rest、Prometheus、Datadog、Statsd、fluxdb)。
此外,Træfɪk船舶与一个简单的基于html的web用户界面用于保持关注的事件。它还支持断路器、重试请求、速率限制和基本身份验证。
5. Apache Traffic Server
以前是雅虎的一个商业产品,后来转交给了Apache基金会,Apache流量服务器是一个免费的,开源的,快速缓存的正向和反向代理服务器。
Traffic Server还可以作为负载均衡器,并可以参与灵活的缓存层次结构。据了解,它每天在雅虎处理超过400tb的流量。
它的特点是对内容请求进行一组保持活跃、过滤或匿名化,并通过允许用户创建定制插件来修改HTTP头、处理ESI请求或设计新的缓存算法的API进行扩展。
6. Squid Proxy Server
Squid是一个免费的、开源的、众所周知的代理服务器和Web缓存守护进程,它支持各种协议,如HTTP、HTTPS、FTP等。它有一个反向代理(httpd-accelerator)模式,用于缓存传入请求和传出数据。
它支持丰富的流量优化选项、访问控制、授权、日志记录工具等等。
7. Pound
A Pound是另一个免费和开源的轻量级反向代理和负载平衡器和web服务器前端。它还是SSL终止程序(解密来自客户端的HTTPS请求并将其作为普通HTTP发送到后端服务器)、HTTP/HTTPS杀毒器(验证请求的正确性并只接受格式良好的请求)和故障转移服务器。
8. Apache HTTP Server
最后但并非最不重要的是,我们有一个Apache HTTP服务器(也称为HTTPD),世界上最流行的web服务器。还可以将其部署和配置为反向代理。
此外,您也可以结帐Skipper,新孩子的街区。它是一个免费的开源HTTP路由器和服务组合的反向代理,包括Kubernetes Ingress这样的用例。