Linux 上十大顶级开源反向代理服务器
反向代理服务器是一种部署在客户端和后端/原始服务器之间的代理服务器,例如NGINX、Apache 等 HTTP 服务器,或用Nodejs、Python、Java、Ruby、PHP和许多其他编程语言编写的应用程序服务器。
它是一个网关或中间服务器,接受客户端请求,将其传递给一个或多个后端服务器,然后从服务器获取响应并将其传回客户端,从而使其看起来好像内容来自反向代理服务器本身。
一般来说,反向代理服务器是一个面向内部的代理,用作“前端”来控制和保护对私有网络上的后端服务器的访问:它通常部署在网络防火墙后面。
它帮助后端服务器实现匿名,从而增强其安全性。在 IT 基础架构中,反向代理还可以充当应用程序防火墙、负载均衡器、TLS 终止器、Web 加速器(通过缓存静态和动态内容)等。
在本文中,我们将回顾可以在 Linux 系统上使用的 10 个顶级开源反向代理服务器。
1. HAProxy –(TCP/HTTP 负载均衡器)
HAProxy(HAProxy,代表高可用性代理)是一款免费、开源、非常快速、可靠且一流的负载均衡器和代理软件,适用于基于 TCP 和 HTTP 的应用程序,专为高可用性而构建。
HAProxy是一个 HTTP 反向代理、TCP 代理和规范器、SSL/TLS 终止器/启动器/卸载器、缓存代理、HTTP 压缩卸载器、流量调节器、基于内容的交换机、FastCGI 网关等。它还可以防止 DDoS 和服务滥用。
它由事件驱动的非阻塞引擎提供支持,该引擎将非常快速的 I/O 层与基于优先级的多线程调度程序相结合,使其能够轻松处理数以万计的并发连接。
值得注意的是,HAProxy使用PROXY协议将客户端的连接信息传递到后端或原始服务器,以便应用程序获取所有相关信息。
HAProxy 的一些基本功能包括代理、SSL 支持、监控服务器状态及其状态、高可用性、负载平衡、粘性(即使在各种事件中也将访问者维持在同一服务器上)、内容切换、HTTP 重写和重定向、服务器保护、日志记录、统计数据等等。
2. NGINX –(HTTP 和反向代理 Web 服务器)
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 终止和许多其他安全功能。
您可能想阅读有关 Nginx Web 服务器的有用文章:
3. Varnish –(反向缓存代理)
Varnish HTTP Cache(或Varnish Cache或简称Varnish)是一款免费、开源、高性能且非常流行的缓存反向代理软件,更为人所知的是它是一种 Web 应用程序加速器,旨在使用服务器端缓存来提高 HTTP 性能。
它部署在客户端和 HTTP Web 服务器或应用服务器之间;每次客户端从 Web 服务器请求信息或资源时,Varnish 都会存储一份该信息的副本,因此下次客户端请求相同信息时,Varnish 将为其提供信息而无需向 Web 服务器发送请求,从而减轻服务器的负载,进而加快 Web 内容传递速度。
Varnish使用一种灵活的配置语言,称为Varnish 配置语言( VLC ),它使系统管理员能够配置如何处理传入请求、从何处提供哪些内容、如何更改请求或响应等等。
Varnish 也是可扩展的——它可以使用Varnish 模块( VMOD ) 进行扩展,并且用户可以编写自定义模块或使用社区提供的模块。
Varnish的主要限制是缺乏对SSL/TLS的支持。启用HTTPS的唯一方法是在其前面部署SSL/TLS终止器或卸载器,例如HAProxy或NGINX 。
4. Træfɪk –(云原生应用代理)
Træfɪk(发音为Traffic)是一个免费、开源、现代且快速的 HTTP 反向代理和负载均衡器,用于部署支持多种负载均衡算法的微服务。
它可以与各种提供商(或服务发现机制或编排工具)交互,例如Kubernetes、Docker、Etcd、Rest API、Mesos/Marathon、Swarm 和 Zookeper。
其令人喜爱的功能是能够自动动态地管理其配置,从而为您的服务找到正确的配置。它通过扫描您的基础设施来查找相关信息,并发现哪个服务为外部世界的哪个请求提供服务。提供商会告诉Træfɪk您的应用程序或微服务位于何处。
Træfɪk 的其他功能包括支持 WebSockets、HTTP/2 和 GRPC、热重载(无需重启即可持续更新配置)、使用Let's Encrypt 证书的HTTPS (通配符证书支持)以及公开 REST API。它还保存访问日志并提供指标(Rest、Prometheus、Datadog、Statsd、InfluxDB)。
此外,Træfɪk还附带一个简单的基于 HTML 的 Web 用户界面,用于监控事件。它还支持断路器、重试请求、速率限制和基本身份验证。
5. Apache Traffic Server –(反向和正向代理服务器)
Apache Traffic Server原是雅虎旗下的一个商业产品,后来移交给Apache 基金会,它是一个免费、开源且快速缓存的正向和反向代理服务器。
Traffic Server还可充当负载平衡器,并可参与灵活的缓存层次结构。据悉,它每天可处理 Yahoo 超过 400 TB 的流量。
它具有一组保持活动、过滤或匿名内容请求的功能,并且可以通过 API 进行扩展,允许用户创建自定义插件来修改 HTTP 标头、处理 ESI 请求或设计新的缓存算法。
6. Squid –(缓存和转发 HTTP 代理)
Squid是一款免费、开源且知名的代理服务器和 Web 缓存守护程序,支持各种协议,例如 HTTP、HTTPS、FTP 等。它具有反向代理 (httpd-accelerator) 模式,可缓存传出数据的传入请求。
它支持丰富的流量优化选项、访问控制、授权、日志记录设施等。
7. Pound –(反向代理和负载均衡器)
Pound是另一款免费开源的轻量级反向代理和负载平衡器,也是 Web 服务器的前端。它还是一个 SSL 终结器(解密来自客户端的 HTTPS 请求并将其作为纯 HTTP 发送到后端服务器)。
HTTP/HTTPS 清理器(验证请求的正确性并仅接受格式正确的请求)和故障转移服务器。
8. Apache –(HTTP Web 服务器)
Apache HTTP服务器(也称为HTTPD)是全球最流行的 Web 服务器,也可以部署和配置为充当反向代理。
Apache 擅长将客户端请求路由到后端服务器,增强安全性、负载平衡和优化 Web 应用程序性能。通过充当中介,Apache 可以有效地将传入流量分配到多个服务器实例,确保高可用性和无缝的用户体验。
其强大且可定制的配置选项使其成为寻求可靠反向代理解决方案的组织的首选,无论是用于内容缓存还是应用程序交付。
9. Skipper –(HTTP 路由器和反向代理)
Skipper是一个免费的开源 HTTP 路由器和用于服务组合的反向代理,包括 Kubernetes Ingress 等用例。
它旨在管理大量动态配置的 HTTP 路由定义,超过800,000条路由,具有复杂的查找条件,并提供灵活性以使用过滤器增强请求流。
它可以按原样轻松部署,也可以通过合并自定义查找、过滤逻辑和配置源进行扩展。
10 Caddy 2 – 自动 HTTPS 的快速服务器
Caddy 2是一个开源 Web 服务器和反向代理,以其简单性和多功能性而闻名,它提供了用户友好的界面和默认的自动 HTTPS,使其成为新手和有经验的用户的可行选择。
Caddy 2旨在轻松处理网络托管、HTTP/2、负载平衡和代理,从而提高网站性能和安全性。它的开源特性鼓励社区做出贡献,并且因其易用性和现代功能在网络托管和服务器管理领域广受欢迎。
结论
这就是我们在本指南中为您准备的全部内容。有关此列表中的每个工具的更多信息,请查看其各自的网站。不要忘记通过下面的反馈表与我们分享您的想法。