AWS ALB 和應用程式伺服器之間是否仍需要反向代理?

AWS ALB 和應用程式伺服器之間是否仍需要反向代理?

情境

帶有應用程式伺服器的 Web 應用程序,即帶有 puma 的 Ruby on Rails。使用 Fargate 在 AWS ECS 上的容器中運作。流量由 AWS Application Load Balancer 直接路由到容器內執行的應用程式伺服器。

問題

ALB 和應用程式本身之間是否仍需要反向代理(即作為 sidecar 容器)?會有什麼好處?

答案1

反向代理不是必需的,但 Rails 附帶的 Web 伺服器功能很少,因此對於任何面向公眾且可能增長的應用程序,儘早整合反向代理(例如 Nginx)是一個好主意。

例如,這將為您提供先進的速率限制功能、快取以及進行端對端 SSL 終止的能力,並且比其他 Web 伺服器實作少得多。日誌記錄也變得更加容易,如果您的應用程式處於負載狀態,TCP 重試之類的東西可以成為救星。

你不需要邊車。您可以將 Nginx 安裝在與您的應用程式相同的機器上。它超級高效,不會影響您的應用程式效能。

我們在 Rails 前面使用多個 Nginx 代理,每天處理數十億個 http 請求。

Cloudflare 等大規模反向代理實作也是基於 Nginx 建構的。

答案2

負載平衡器是一種反向代理。它的好處包括接受特定連接埠上的流量、充當一種防火牆,並防止某些類型的攻擊到達伺服器。

對於網頁應用程式的常見情況,我看不出同時擁有負載平衡器和第二個反向代理有任何顯著的好處。

相關內容