Hello! On Thu, Apr 04, 2019 at 10:36:33PM +0500, Dmitry Sergeev wrote:
> Добрый день. > ОС: Ubuntu 16.04 > > Nginx версия с которой проблемы: > nginx version: nginx/1.14.2 > built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.11) > built with OpenSSL 1.0.2g 1 Mar 2016 > TLS SNI support enabled > > Обновились до последней стабильной сборки nginx. Количество ошибок 4xx > значительно повышается: А именно 499 в два раза, 400 в 20 раз, 408 в 14 > раз, в целом всего 4xx ошибок становится в 3-4 раза больше. > > Раннее мы работали на nginx 1.12.1 собственной сборки с openssl 1.0.1u, > когда-то я собирали эту версию по тем же причинам (сборка nginx 1.12.1 > из репозитория себя вела точно также - куча ошибок). > > Поэтому сейчас снова пришлось собрать уже новую версию nginx (1.14.2) но > со старым openssl 1.0.1u. > > Привожу скрин для наглядности: http://joxi.net/n2YQdVZSbozM02.jpg > Здесь статистка по ошибкам из двух одинаковых серверов за 30 минутный > интервал времени. > Где lb21 имеет nginx 1.14.2 + openssl 1.0.1u, а lb21-2 nginx 1.14.2 + > openssl 1.0.2g > > Вот так выглядет процесс отката до nginx 1.14.2 + openssl 1.0.1u c точки > зрения количества ошибок: http://joxi.net/EA4RKZXHowQDQm.jpg (здесь > каждый столбик это количество за минуту). Количество ошибок на уровне HTTP - может быть нерелевантно происходящему, и, скажем, означать, что больше проблемных клиентов теперь могут пройти через SSL handshake. Ну и смотреть надо не на абсолютные цифры, а на проценты от трафика. Если речь про доли процента - наблюдаемое изменение может быть следствием того, что проблемы возникают у каких-либо малораспространённых клинтов, и совершенно не факт, что на это надо обращать внимание. Например, из OpenSSL 1.0.2 могли убрать какие-то workaround'ы для ошибочного поведения, или же из-за изменения списка шифров теперь используются другие шифры, которые, наоборот, вызывают проблемы в этих клиентах. Если же хочется таки разобраться - то имеет смысл смотреть подробную информацию по ошибкам, в частности - что при этом пишет nginx в логи (если есть подробности - они скорее всего на уровне info), и что известно про этих клиентов - User-Agent, используемые протоколы, шифры и так далее. > Конфигурации одинаковые, количество трафика одинаковое. Пробовал менять > местами версии nginx между этими серверами, сразу видно как начинает > расти количество ошибок на том сервере где используется nginx 1.14.2 + > openssl 1.0.2g. Тенденция роста количества 499, 400, 408 ошибок видна > моментально после обновления версии. > > Пробовал разные версии openssl (ветки 1.0.2, 1.1.1). Все что выше 1.0.1u > дает такой результат. Пробовал отключать/включать http2 никак не влияет. В первую очередь - в OpenSSL 1.0.1 нет ALPN, то есть HTTP/2 в современных браузерах работать не будет. Если в конфиге включён HTTP/2 - переход на OpenSSL 1.0.2 будет сильным изменением поведения в любом случае. Так что имеет смысл HTTP/2 выключить и сравнивать строго без HTTP/2. Важно при этом выключить везде, потому как http2 - это опция сокета, и если она останется в любом из блоков server, то HTTP/2 продолжит работать. > Конфиугация ssl в nginx стоит по умолчанию (то есть только указаны > диррективы ssl_certificate, ssl_certificate_key). Если вдруг используются множественные сертификаты в одном блоке server - переход с OpenSSL 1.0.1 на 1.0.2 потребует изменения цепочек в ssl_certificate, т.к. в случае OpenSSL 1.0.1 цепочка только одна и общаяя для всех сертификатов, а в случае 1.0.2 - у каждого сертификата своя. В остальном я каких-либо особенных проблем с OpenSSL 1.0.2 не помню, в целом хорошая ветка. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru