Поэтому я планирую использовать ELB с сквозной передачей SSL на серверы с haproxy или nginx.
Я буду размещать тысячи сертификатов Let-encrypt.
Что лучше: nginx или haproxy справляется с тысячами сертификатов SSL? Или в этом плане разницы принципиально нет?
Я хочу терминал SSL на haproxy или nginx, и с таким количеством файлов сертификатов и т. Д. Я хочу знать, будет ли лучше обрабатывать такое количество сертификатов или нет.
В соответствии с Документация по Elastic Load BalancerКлассические балансировщики нагрузки позволяют использовать один сертификат для каждого прослушивателя до 100 прослушивателей (на разных портах).
Балансировщики нагрузки приложений с другой стороны, у каждого балансировщика есть ограничение в 25 сертификатов, хотя вы можете использовать их все с одним и тем же слушателем.
Я бы сказал, что ваш единственный жизнеспособный подход для такого огромного количества сертификатов - это развертывание ваших экземпляров EC2 за балансировщиком сетевой нагрузки, который работает на более низком сетевом уровне и полностью делегирует согласование SSL на серверные экземпляры.
Если ваша рабочая нагрузка ориентирована на HTTP, я бы сказал, что Nginx сделает все лучше, чем HAProxy. Если вы собираетесь проксировать другие протоколы, HAproxy - ваш лучший выбор.
Я думаю, что с 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 составляет около 5 КБ (2048 ключей rsa), загрузка миллиона из них будет стоить вам около 5 ГБ памяти.
Теперь, когда HAProxy назначает сертификаты для каждого слушателя, я думаю, что NGINX назначает сертификаты для «имени сервера», поэтому вам понадобится столько блоков сервера, сколько у вас есть доменов. Если вы используете тысячи из них, вам, вероятно, придется это написать.
Оба хороши. Я бы лично использовал nginx, так как с этой точки зрения (насколько я понимаю) у вас нет нескольких серверов, поэтому вам не нужен haproxy для этой стороны.
Просто установите nginx с ssl и прокси-сервером :)