
그래서 나는 haproxy 또는 nginx를 실행하는 서버에 대한 SSL 패스스루를 갖춘 ELB를 계획하고 있습니다.
잠재적으로 수천 개의 Let-encrypt 인증서를 호스팅할 것입니다.
수천 개의 SSL 인증서를 처리하는 데 nginx 또는 haproxy가 더 낫습니까? 아니면 이와 관련하여 기본적으로 차이가 없습니까?
나는 haproxy 또는 nginx에서 너무 많은 인증서 파일 등을 사용하여 SSL을 터미널하고 싶습니다. 많은 인증서를 처리하는 데 더 나은지 여부에 대한 아이디어가 필요합니다.
답변1
에 따라Elastic Load Balancer 설명서, Classic Load Balancer는 최대 100개의 리스너(다른 포트에 있음)가 포함된 리스너당 단일 인증서를 허용합니다.
애플리케이션 로드 밸런서반면, 동일한 리스너에서 모든 인증서를 사용할 수 있지만 밸런서당 인증서는 25개로 제한됩니다.
그렇게 많은 양의 인증서에 대해 실행 가능한 유일한 접근 방식은 낮은 네트워크 계층에서 작동하고 백엔드 인스턴스에서 SSL 협상을 완전히 위임하는 Network Load Balancer 뒤에 EC2 인스턴스를 배포하는 것입니다.
귀하의 워크로드가 HTTP 지향적이라면 Nginx가 HAProxy보다 더 나은 거래를 할 것이라고 말하고 싶습니다. 다른 프로토콜을 프록시하려는 경우 HAproxy가 최선의 선택입니다.
답변2
둘 다 훌륭합니다. 나는 개인적으로 nginx를 사용할 것입니다. 그 관점에서(내가 이해하는 바에 따르면) 여러 백엔드를 실행하지 않기 때문에 해당 측면에서는 haproxy가 필요하지 않기 때문입니다.
SSL과 프록시 패스를 사용하여 nginx를 설정하세요 :)
답변3
HAProxy를 사용하면 수천 개의 인증서를 로드하는 것이 더 쉽다고 생각합니다. 당신이 해야 할 일은 인증서를 단일 디렉터리에 넣는 것뿐입니다. 그러면 HAProxy는 다음과 같은 모든 인증서를 로드합니다.crt 지시어.
따라서 SSL 오프로딩을 위한 최소 구성은 다음과 같습니다.
listen ssl_offload
mode http
bind IP:443 ssl crt <path-to-ssl-directory>
timeout client 30s
timeout server 30s
timeout connect 5s
server srv1 IP:80 check
HAProxy는 클라이언트가 제공한 SNI 호스트 이름(현재지원됨대부분의 최신 브라우저에서).
여러 SSL 인증서를 로드하는 것은 여기서 메모리 소비의 문제일 뿐입니다. HAProxy에는 필수 인증서와 관련 개인 키가 모두 포함된 PEM 파일이 있어야 합니다. 따라서 평균 PEM 파일이 약 5K(2048 rsa 키)인 경우 수백만 개를 로드하면 약 5GB의 메모리가 필요합니다.
이제 HAProxy는 수신기별로 인증서를 할당하지만 NGINX는 "서버 이름"별로 인증서를 할당하므로 보유한 도메인 수만큼 많은 서버 블록이 필요하다고 생각합니다. 수천 개를 사용하고 있다면 아마도 이를 스크립트로 작성해야 할 것입니다.