AWS ALB와 애플리케이션 서버 간에 역방향 프록시가 여전히 필요합니까?

AWS ALB와 애플리케이션 서버 간에 역방향 프록시가 여전히 필요합니까?

문맥

애플리케이션 서버가 포함된 웹 애플리케이션(예: puma가 포함된 Ruby on Rails) Fargate를 사용하여 AWS ECS의 컨테이너 내에서 실행됩니다. 트래픽은 AWS Application Load Balancer에 의해 컨테이너 내에서 실행되는 애플리케이션 서버로 직접 라우팅됩니다.

질문

ALB와 애플리케이션 자체 간에(즉, 사이드카 컨테이너로서) 역방향 프록시가 여전히 필요합니까? 어떤 이점이 있을까요?

답변1

역방향 프록시는 필요하지 않지만 Rails와 함께 제공되는 웹 서버에는 최소한의 기능이 있으므로 공용이고 잠재적으로 성장할 수 있는 모든 애플리케이션의 경우 역방향 프록시(예: Nginx)를 초기에 통합하는 것이 좋습니다.

예를 들어, 이는 다른 웹 서버 구현보다 훨씬 적은 번거로움으로 고급 속도 제한 기능, 캐싱 및 종단 간 SSL 종료 기능을 제공합니다. 로깅도 훨씬 쉬워지고 애플리케이션이 로드 중인 경우 TCP 재시도와 같은 기능이 생명을 구할 수 있습니다.

사이드카는 필요하지 않습니다. 애플리케이션과 동일한 상자에 Nginx를 설치할 수 있습니다. 매우 효율적이며 애플리케이션 성능에 영향을 미치지 않습니다.

우리는 Rails 앞에서 여러 Nginx 프록시를 사용하며 하루에 수십억 개의 http 요청을 처리합니다.

Cloudflare와 같은 대규모 역방향 프록시 구현도 Nginx를 기반으로 구축되었습니다.

답변2

로드 밸런서는 역방향 프록시의 한 유형입니다. 특정 포트에서 트래픽을 허용하고 일종의 방화벽 역할을 하며 서버에 도달하는 일부 공격을 방지하는 등의 이점이 있습니다.

웹 앱의 일반적인 경우에는 로드 밸런서와 두 번째 역방향 프록시를 모두 사용하는 것의 큰 이점을 볼 수 없습니다.

관련 정보