Контекст
Веб-приложение с сервером приложений, то есть Ruby on Rails с puma. Запуск внутри контейнера на AWS ECS с помощью Fargate. AWS Application Load Balancer направляет трафик непосредственно на сервер приложений, работающий в контейнере.
Вопрос
Требуется ли обратный прокси-сервер между ALB и самим приложением, то есть в качестве контейнера sidecar? Какая будет польза?
Обратный прокси-сервер не требуется, но веб-серверы, поставляемые с Rails, имеют минимальную функциональность, поэтому для любого общедоступного приложения, которое потенциально может расти, рекомендуется на ранней стадии интегрировать обратный прокси-сервер (например, Nginx).
Например, это даст вам расширенные возможности ограничения скорости, кэширования и возможность выполнять сквозное завершение SSL с гораздо меньшими усилиями, чем другие реализации веб-сервера. Ведение журнала также становится намного проще, и такие вещи, как повторные попытки TCP, могут спасти жизнь, если ваше приложение находится под нагрузкой.
Вам не нужна коляска. Вы можете установить Nginx на том же компьютере, что и ваше приложение. Это суперэффективно и не повлияет на производительность вашего приложения.
Мы используем несколько прокси Nginx перед Rails и обслуживаем миллиарды HTTP-запросов в день.
Массивные реализации обратного проксирования, такие как Cloudflare, также построены на Nginx.
Балансировщик нагрузки - это тип обратного прокси. Его преимущества включают в себя прием трафика на определенных портах, работу в качестве брандмауэра и предотвращение некоторых видов атак, достигающих сервера.
В общем случае веб-приложения я не вижу значительных преимуществ наличия и балансировщика нагрузки, и второго обратного прокси.