ELB с SSL проходит через nginx или haproxy. Что подходит для обработки большего количества сертификатов?

ELB с SSL проходит через nginx или haproxy. Что подходит для обработки большего количества сертификатов?

Поэтому я планирую использовать ELB с SSL-проходом к серверам, работающим под управлением HAProxy или Nginx.

Я буду размещать потенциально тысячи сертификатов Lets-Encrypt.

Что лучше - nginx или haproxy - справляется с обработкой тысяч ssl-сертификатов? Или в этом отношении разницы практически нет?

Я хочу терминировать SSL либо на haproxy, либо на nginx, а также с таким количеством файлов сертификатов и т. д. Мне нужно понять, будет ли один из них лучше справляться с таким количеством сертификатов или нет.

решение1

В соответствии сДокументация по Elastic Load BalancerКлассические балансировщики нагрузки допускают использование одного сертификата на прослушиватель, при этом может быть до 100 прослушивателей (на разных портах).

Балансировщики нагрузки приложенийс другой стороны, установите ограничение в 25 сертификатов на балансировщик, хотя вы можете использовать их все с одним и тем же прослушивателем.

Я бы сказал, что единственным приемлемым подходом для такого огромного количества сертификатов будет развертывание экземпляров EC2 за балансировщиком сетевой нагрузки, который работает на нижнем сетевом уровне и полностью делегирует согласование SSL на внутренние экземпляры.

Если ваша рабочая нагрузка ориентирована на HTTP, я бы сказал, что Nginx сделает сделку лучше, чем HAProxy. Если вы собираетесь проксировать другие протоколы, HAproxy — ваш лучший выбор.

решение2

Оба хороши. Лично я бы использовал nginx, поскольку с этой точки зрения вы не запускаете несколько бэкендов (насколько я понимаю), поэтому вам не нужен haproxy с этой стороны.

Просто настройте nginx с SSL и прокси-паролем :)

решение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 составляет около 5 КБ (2048 ключей RSA), загрузка миллиона из них обойдется вам примерно в 5 ГБ памяти.

Теперь, в то время как HAProxy назначает сертификаты на слушателя, я думаю, что NGINX назначает сертификаты на "имя сервера", поэтому вам понадобится столько серверных блоков, сколько у вас доменов. Если вы используете тысячи из них, вам, вероятно, придется написать этот скрипт.

Связанный контент