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 Cache(或Varnish Cache或簡稱Varnish)是一款免費、開源、高性能且非常流行的緩存反向代理軟體,更廣為人知為網絡應用加速器,旨在使用服務器端緩存來提高 HTTP 性能。
它部署在客戶端和 HTTP 網絡伺服器或應用伺服器之間;每當客戶端從網絡伺服器請求信息或資源時,Varnish 都會存儲一份信息的副本,因此下一次客戶端請求相同的信息時,Varnish 將在不向網絡伺服器發送請求的情況下提供它,從而減輕了伺服器的負載,加速了網絡內容的傳遞。
Varnish 使用一種靈活的配置語言,稱為Varnish 配置語言(VLC),其中之一的功能是使系統管理員能夠配置應如何處理傳入請求,應該提供哪些內容,來自哪裡,以及如何更改請求或響應,以及更多其他功能。
這種清漆也是可擴展的 – 可以使用 清漆模組 (VMODs) 並且用戶可以編寫自己的自定義模組或使用社區提供的模組。
清漆 的主要限制是缺乏對 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 – (反向和正向代理服务器)
曾经是雅虎(Yahoo)拥有的商业产品,后来移交给了Apache基金会,Apache Traffic Server 是一个免费、开源且快速的缓存正向和反向代理服务器。Yahoo交给了Apache基金会,Apache Traffic Server 是一个免费、开源且快速的缓存正向和反向代理服务器。Apache Traffic Server也可以作为负载均衡器,并可以参与灵活的缓存层级结构。据悉,它在雅虎每天处理超过 400 TB 的流量。
Traffic Server 还具有保持连接、过滤或匿名化内容请求的功能,并通过 API 实现扩展,允许用户创建自定义插件来修改HTTP头、处理ESI请求或设计新的缓存算法。Traffic Server也可以作为负载均衡器,并可以参与灵活的缓存层级结构。据悉,它在雅虎每天处理超过 400 TB 的流量。
它还具有保持连接、过滤或匿名化内容请求的功能,并通过 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/