A reverse proxy server is a type of proxy server that is deployed between clients and back-end/origin servers, for example, an HTTP server such as NGINX, Apache, etc.. or application servers written in Nodejs, Python, Java, Ruby, PHP, and many other programming languages.
它是一个网关或中间服务器,接收客户端请求,将其传递给一个或多个后端服务器,然后从服务器获取响应并将其传递回客户端,使其看起来好像内容来源于反向代理服务器本身。
通常,反向代理服务器是一个内部代理,用作“前端”来控制和保护对私有网络上后端服务器的访问:通常部署在网络防火墙后面。
它帮助后端服务器实现匿名以增强其安全性。在IT基础设施中,反向代理还可以充当应用程序防火墙、负载均衡器、TLS终结者、Web加速器(通过缓存静态和动态内容)等。
在本文中,我们将回顾你可以在Linux系统上使用的十个顶级开源反向代理服务器。
目录
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缓存(或者Varnish缓存或简称Varnish)是一个免费的、开源的、高性能的、非常流行的缓存反向代理软件,更为人所知的是一个网站应用加速器,旨在通过服务器端缓存来提高HTTP性能。
它部署在客户端和HTTP Web服务器或应用服务器之间;每当客户端从Web服务器请求信息或资源时,Varnish都会存储信息的副本,因此下次客户端请求相同的信息时,Varnish将提供它而不向Web服务器发送请求,从而减轻服务器负载并加快Web内容交付速度。
Varnish使用一种灵活的配置语言,称为Varnish配置语言(VCL),其中,系统管理员可以配置如何处理传入请求,应该提供什么内容以及从何处提供,以及如何更改请求或响应等。
Varnish 也是可扩展的 – 可以使用 Varnish 模块(VMODs)进行扩展,用户可以编写自定义模块或使用社区提供的模块。
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基金会,Apache Traffic Server是一个免费、开源和快速的缓存正向和反向代理服务器。
Traffic Server也作为负载均衡器工作,并且可以参与灵活的缓存层次结构。据悉,它在雅虎每天处理了超过400TB的流量。
它具有一套保持连接、过滤或匿名化内容请求的功能,并且通过API可扩展,允许用户创建自定义插件以修改HTTP标头、处理ESI请求或设计新的缓存算法。
6. Squid –(缓存和转发HTTP代理)
Squid是一个免费、开源且广为人知的代理服务器和Web缓存守护进程,支持HTTP、HTTPS、FTP等各种协议。它具有反向代理(httpd加速器)模式,用于缓存传入请求的传出数据。
它支持丰富的流量优化选项、访问控制、授权、日志记录功能等。
7. Pound – (反向代理和负载均衡器)
A Pound is another free and open-source, lightweight reverse proxy and load balancer and front-end for web servers. It is also an SSL terminator (that decrypts HTTPS requests from clients and sends them as plain HTTP to the back-end servers).
一个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、负载平衡和代理,提升网站性能和安全性。其开源性质鼓励社区贡献,因其易用性和现代功能,在网页托管和服务器管理领域备受欢迎。
结论
这就是我们在本指南中为您提供的所有内容。有关列表中每个工具的更多信息,请访问它们各自的网站。别忘了通过下面的反馈表与我们分享您的想法。
Source:
https://www.tecmint.com/open-source-reverse-proxy-servers-for-linux/