Hello! On Sat, Jul 14, 2018 at 11:20:59PM -0400, Ilya Evseev wrote:
> Имеется конфигурация с ~500-600 сайтов, из них примерно 10% с поддержкой > https, в остальных только http. > wildcard-ключ с сертификатом указан в блоке "http". > > Обратил внимание, что "nginx -t" и "nginx -s reload" стали отрабатывать > секунд по 10. > > Профайлер говорит, что 90% времени уходит на ngx_http_ssl_merge_srv_conf => > ngx_ssl_certificates, > количество вызовов у них одинаковое. > > Переместил сертификат в блоки "server", где используется ssl - nginx стал > читать конфигурацию в несколько раз быстрее. > > Какой смысл проверять сертификаты для серверов без https? > Можно ли отключить такую проверку? В силу исторических причин на уровне server{} в момент merge'а конфигурации неизвестно, может ли в него попасть HTTPS-соединение, или нет. Скажем, вот в такой конфигурации HTTPS-соединение может попасть и в сервер foo, и в сервер bar, но nginx об этом знает только в сервере foo: server { listen 443; server_name foo; ssl on; } server { listen 443; server_name bar; } Соответственно признаком для того, что нужно создавать SSL-контекст и загружать сертификаты служит собственно наличие сертфикатов. Если SSL-сертификат в данном сервере задан (или унаследован с уровня http) - то SSL-контекст создаётся. Если не задан - не создаётся. Начиная с 1.15.0 nginx ругается на наличие директивы "ssl", и предлагает вместо неё использовать "listen ... ssl". Когда мы её окончательно запретим - возможно, дойдут руки и до оптимизации создания SSL-контекстов, благо при использовании "listen ... ssl" это получается сделать несколько проще. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru