Amazon-Web-Services
AWS ALB 和應用程序伺服器之間是否仍需要反向代理?
語境
帶有應用伺服器的Web 應用程序,即帶有puma 的Ruby on Rails。使用 Fargate 在 AWS ECS 上的容器中執行。流量由 AWS Application Load Balancer 直接路由到容器內執行的應用程序伺服器。
問題
ALB 和應用程序本身之間是否仍需要反向代理,即作為 sidecar 容器?會有什麼好處?
不需要反向代理,但 Rails 附帶的 Web 伺服器功能最少,因此對於任何面向公眾且可能增長的應用程序,儘早集成反向代理(例如 Nginx)是一個好主意。
例如,這將為您提供高級限速功能、記憶體和端到端 SSL 終止的能力,而與其他 Web 伺服器實現相比,它的麻煩要少得多。日誌記錄也變得更加容易,如果您的應用程序處於負載狀態,諸如 TCP 重試之類的東西可以挽救生命。
你不需要邊車。您可以將 Nginx 安裝在與您的應用程序相同的盒子上。它超級高效,不會影響您的應用程序性能。
我們在 Rails 前使用多個 Nginx 代理,每天處理數十億個 http 請求。
Cloudflare 等海量反向代理實現也是基於 Nginx 建構的。