Гляньте ради прикола сколько исправлений ошибок и изменений всякой фигни по сравнению со стандартной версией которая идет с дистрибутивом по дефолту, на вопрос зачем:
Изменения в nginx 1.24.0 11.04.2023 *) Стабильная ветка 1.24.x. Изменения в nginx 1.23.4 28.03.2023 *) Изменение: теперь протокол TLSv1.3 разрешён по умолчанию. *) Изменение: теперь nginx выдаёт предупреждение при переопределении параметров listen-сокета, задающих используемые протоколы. *) Изменение: теперь, если клиент использует pipelining, nginx закрывает соединения с ожиданием дополнительных данных (lingering close). *) Добавление: поддержка byte ranges для ответов модуля ngx_http_gzip_static_module. *) Исправление: диапазоны портов в директиве listen не работали; ошибка появилась в 1.23.3. Спасибо Валентину Бартеневу. *) Исправление: для обработки запроса мог быть выбран неверный location, если в конфигурации использовался префиксный location длиннее 255 символов. *) Исправление: не-ASCII символы в именах файлов на Windows не поддерживались модулями ngx_http_autoindex_module и ngx_http_dav_module, а также директивой include. *) Изменение: уровень логгирования ошибок SSL "data length too long", "length too short", "bad legacy version", "no shared signature algorithms", "bad digest length", "missing sigalgs extension", "encrypted length too long", "bad length", "bad key update", "mixed handshake and non handshake data", "ccs received early", "data between ccs and finished", "packet length too long", "too many warn alerts", "record too small", и "got a fin before a ccs" понижен с уровня crit до info. *) Исправление: при использовании HTTP/2 и директивы error_page для перенаправления ошибок с кодом 400 могла происходить утечка сокетов. *) Исправление: сообщения об ошибках записи в syslog не содержали информации о том, что ошибки происходили в процессе записи в syslog. Спасибо Safar Safarly. *) Изменение: при использовании zlib-ng в логах появлялись сообщения "gzip filter failed to use preallocated memory". *) Исправление: в почтовом прокси-сервере. Изменения в nginx 1.23.3 13.12.2022 *) Исправление: при чтении заголовка протокола PROXY версии 2, содержащего большое количество TLV, могла возникать ошибка. *) Исправление: при использовании SSI для обработки подзапросов, созданных другими модулями, в рабочем процессе мог произойти segmentation fault. Спасибо Ciel Zhao. *) Изменение: теперь, если при преобразовании в адреса имени хоста, указанного в директиве listen, возвращается несколько адресов, nginx игнорирует дубликаты среди этих адресов. *) Исправление: nginx мог нагружать процессор при небуферизированном проксировании, если использовались SSL-соединения с бэкендами. Изменения в nginx 1.23.2 19.10.2022 *) Безопасность: обработка специально созданного mp4-файла модулем ngx_http_mp4_module могла приводить к падению рабочего процесса, отправке клиенту части содержимого памяти рабочего процесса, а также потенциально могла иметь другие последствия (CVE-2022-41741, CVE-2022-41742). *) Добавление: переменные "$proxy_protocol_tlv_...". *) Добавление: ключи шифрования TLS session tickets теперь автоматически меняются при использовании разделяемой памяти в ssl_session_cache. *) Изменение: уровень логгирования ошибок SSL "bad record type" понижен с уровня crit до info. Спасибо Murilo Andrade. *) Изменение: теперь при использовании разделяемой памяти в ssl_session_cache сообщения "could not allocate new session" логгируются на уровне warn вместо alert и не чаще одного раза в секунду. *) Исправление: nginx/Windows не собирался с OpenSSL 3.0.x. *) Исправление: в логгировании ошибок протокола PROXY. Спасибо Сергею Брестеру. *) Изменение: при использовании TLSv1.3 с OpenSSL разделяемая память из ssl_session_cache расходовалась в том числе на сессии, использующие TLS session tickets. *) Изменение: таймаут, заданный с помощью директивы ssl_session_timeout, не работал при использовании TLSv1.3 с OpenSSL или BoringSSL. Изменения в nginx 1.23.1 19.07.2022 *) Добавление: оптимизация использования памяти в конфигурациях с SSL-проксированием. *) Добавление: теперь с помощью параметра "ipv4=off" директивы "resolver" можно запретить поиск IPv4-адресов при преобразовании имён в адреса. *) Изменение: уровень логгирования ошибок SSL "bad key share", "bad extension", "bad cipher" и "bad ecpoint" понижен с уровня crit до info. *) Исправление: при возврате диапазонов nginx не удалял строку заголовка "Content-Range", если она присутствовала в исходном ответе бэкенда. *) Исправление: проксированный ответ мог быть отправлен не полностью при переконфигурации на Linux; ошибка появилась в 1.17.5. Изменения в nginx 1.23.0 21.06.2022 *) Изменение во внутреннем API: теперь строки заголовков представлены связными списками. *) Изменение: теперь nginx объединяет произвольные строки заголовков с одинаковыми именами при отправке на FastCGI-, SCGI- и uwsgi-бэкенды, в методе $r->header_in() модуля ngx_http_perl_module, и при доступе через переменные "$http_...", "$sent_http_...", "$sent_trailer_...", "$upstream_http_..." и "$upstream_trailer_...". *) Исправление: если в заголовке ответа бэкенда было несколько строк "Vary", при кэшировании nginx учитывал только последнюю из них. *) Исправление: если в заголовке ответа бэкенда было несколько строк "WWW-Authenticate" и использовался перехват ошибок с кодом 401 от бэкенда или директива auth_request, nginx пересылал клиенту только первую из этих строк. *) Изменение: уровень логгирования ошибок SSL "application data after close notify" понижен с уровня crit до info. *) Исправление: соединения могли зависать, если nginx был собран на Linux 2.6.17 и новее, а использовался на системах без поддержки EPOLLRDHUP, в частности, на системах с эмуляцией epoll; ошибка появилась в 1.17.5. Спасибо Marcus Ball. *) Исправление: nginx не кэшировал ответ, если строка заголовка ответа "Expires" запрещала кэширование, а последующая строка заголовка "Cache-Control" разрешала кэширование. Изменения в nginx 1.21.6 25.01.2022 *) Исправление: при использование EPOLLEXCLUSIVE на Linux распределение клиентских соединений между рабочими процессами было неравномерным. *) Исправление: во время плавного завершения старых рабочих процессов nginx возвращал в ответах строку заголовка "Connection: keep-alive". *) Исправление: в директиве ssl_session_ticket_key при использовании TLSv1.3. Изменения в nginx 1.21.5 28.12.2021 *) Изменение: теперь nginx по умолчанию собирается с библиотекой PCRE2. *) Изменение: теперь nginx всегда использует sendfile(SF_NODISKIO) на FreeBSD. *) Добавление: поддержка sendfile(SF_NOCACHE) на FreeBSD. *) Добавление: переменная $ssl_curve. *) Исправление: при использовании HTTP/2 без SSL вместе с директивами sendfile и aio соединения могли зависать. Изменения в nginx 1.21.4 02.11.2021 *) Изменение: поддержка NPN вместо ALPN для установления HTTP/2-соединений упразднена. *) Изменение: теперь nginx закрывает SSL соединение, если клиент использует ALPN, но nginx не поддерживает ни один из присланных клиентом протоколов. *) Изменение: в директиве sendfile_max_chunk значение по умолчанию изменено на 2 мегабайта. *) Добавление: директива proxy_half_close в модуле stream. *) Добавление: директива ssl_alpn в модуле stream. *) Добавление: переменная $ssl_alpn_protocol. *) Добавление: поддержка SSL_sendfile() при использовании OpenSSL 3.0. *) Добавление: директива mp4_start_key_frame в модуле ngx_http_mp4_module. Спасибо Tracey Jaquith. *) Исправление: в переменной $content_length при использовании chunked transfer encoding. *) Исправление: при получении ответа некорректной длины от проксируемого бэкенда nginx мог тем не менее закэшировать соединение. Спасибо Awdhesh Mathpal. *) Исправление: некорректные заголовки от бэкендов логгировались на уровне info вместо error; ошибка появилась в 1.21.1. *) Исправление: при использовании HTTP/2 и директивы aio_write запросы могли зависать. Изменения в nginx 1.21.3 07.09.2021 *) Изменение: оптимизация чтения тела запроса при использовании HTTP/2. *) Исправление: во внутреннем API для обработки тела запроса при использовании HTTP/2 и буферизации обрабатываемых данных. Изменения в nginx 1.21.2 31.08.2021 *) Изменение: теперь nginx возвращает ошибку, если в запросе по протоколу HTTP/1.0 присутствует строка заголовка "Transfer-Encoding". *) Изменение: экспортные шифры больше не поддерживаются. *) Добавление: совместимость с OpenSSL 3.0. *) Добавление: теперь серверу аутентификации почтового прокси-сервера передаются строки заголовка "Auth-SSL-Protocol" и "Auth-SSL-Cipher". Спасибо Rob Mueller. *) Добавление: API для обработки тела запроса теперь позволяет буферизировать обрабатываемые данные. *) Исправление: SSL-соединения к бэкендам в модуле stream могли зависать после SSL handshake. *) Исправление: уровень безопасности, доступный в OpenSSL 1.1.0 и новее, не учитывался при загрузке сертификатов сервера, если был задан через "@SECLEVEL=N" в директиве ssl_ciphers. *) Исправление: SSL-соединения с gRPC-бэкендами могли зависать, если использовались методы select, poll или /dev/poll. *) Исправление: при использовании HTTP/2 тело запроса всегда записывалось на диск, если в запросе не было строки заголовка "Content-Length". Изменения в nginx 1.21.1 06.07.2021 *) Изменение: теперь nginx для метода CONNECT всегда возвращает ошибку. *) Изменение: теперь nginx всегда возвращает ошибку, если в запросе одновременно присутствуют строки заголовка "Content-Length" и "Transfer-Encoding". *) Изменение: теперь nginx всегда возвращает ошибку, если в строке запроса используются пробелы или управляющие символы. *) Изменение: теперь nginx всегда возвращает ошибку, если в имени заголовка используются пробелы или управляющие символы. *) Изменение: теперь nginx всегда возвращает ошибку, если в строке "Host" заголовка запроса используются пробелы или управляющие символы. *) Изменение: оптимизация тестирования конфигурации при использовании большого количества listen-сокетов. *) Исправление: nginx не экранировал символы """, "<", ">", "\", "^", "`", "{", "|", и "}" при проксировании с изменением URI запроса. *) Исправление: SSL-переменные могли быть пустыми при записи в лог; ошибка появилась в 1.19.5. *) Исправление: keepalive-соединения с gRPC-бэкендами могли не закрываться после получения GOAWAY-фрейма. *) Исправление: уменьшено потребление памяти для долгоживущих запросов при проксировании с использованием более 64 буферов. Изменения в nginx 1.21.0 25.05.2021 *) Безопасность: при использовании директивы resolver во время обработки ответа DNS-сервера могла происходить перезапись одного байта памяти, что позволяло атакующему, имеющему возможность подделывать UDP-пакеты от DNS-сервера, вызвать падение рабочего процесса или, потенциально, выполнение произвольного кода (CVE-2021-23017). *) Добавление: директивы proxy_ssl_certificate, proxy_ssl_certificate_key, grpc_ssl_certificate, grpc_ssl_certificate_key, uwsgi_ssl_certificate и uwsgi_ssl_certificate_key поддерживают переменные. *) Добавление: директива max_errors в почтовом прокси-сервере. *) Добавление: почтовый прокси-сервер поддерживает POP3 и IMAP pipelining. *) Добавление: параметр fastopen директивы listen в модуле stream. Спасибо Anbang Wen. *) Исправление: специальные символы не экранировались при автоматическом перенаправлении с добавлением завершающего слэша. *) Исправление: при использовании SMTP pipelining соединения с клиентами в почтовом прокси-сервере могли неожиданно закрываться. Изменения в nginx 1.19.10 13.04.2021 *) Изменение: в директиве keepalive_requests значение по умолчанию изменено на 1000. *) Добавление: директива keepalive_time. *) Добавление: переменная $connection_time. *) Изменение: при использовании zlib-ng в логах появлялись сообщения "gzip filter failed to use preallocated memory". Изменения в nginx 1.19.9 30.03.2021 *) Исправление: nginx не собирался с почтовым прокси-сервером, но без модуля ngx_mail_ssl_module; ошибка появилась в 1.19.8. *) Исправление: при работе с gRPC-бэкендами могли возникать ошибки "upstream sent response body larger than indicated content length"; ошибка появилась в 1.19.1. *) Исправление: если клиент закрывал соединение в момент отбрасывания тела запроса, nginx мог не закрыть соединение до истечения keepalive-таймаута. *) Исправление: при ожидании задержки limit_req или auth_delay, а также при работе с бэкендами nginx мог не обнаружить, что соединение уже закрыто клиентом. *) Исправление: в методе обработки соединений eventport. Изменения в nginx 1.19.8 09.03.2021 *) Добавление: в директиве proxy_cookie_flags теперь флаги можно задавать с помощью переменных. *) Добавление: параметр proxy_protocol в директиве listen, директивы proxy_protocol и set_real_ip_from в почтовом прокси-сервере. *) Исправление: HTTP/2-соединения сразу закрывались при использовании "keepalive_timeout 0"; ошибка появилась в 1.19.7. *) Исправление: некоторые ошибки логгировались как неизвестные, если nginx был собран с glibc 2.32. *) Исправление: в методе обработки соединений eventport. Изменения в nginx 1.19.7 16.02.2021 *) Изменение: обработка соединений в HTTP/2 была изменена и теперь более соответствует HTTP/1.x; директивы http2_recv_timeout, http2_idle_timeout и http2_max_requests упразднены, вместо них следует использовать директивы keepalive_timeout и keepalive_requests. *) Изменение: директивы http2_max_field_size и http2_max_header_size упразднены, вместо них следует использовать директиву large_client_header_buffers. *) Добавление: теперь при исчерпании свободных соединений nginx закрывает не только keepalive-соединения, но и соединения в lingering close. *) Исправление: в логах могли появляться сообщения "zero size buf in output", если бэкенд возвращал некорректный ответ при небуферизированном проксировании; ошибка появилась в 1.19.1. *) Исправление: при использовании директивы return вместе с image_filter или xslt_stylesheet HEAD-запросы обрабатывались некорректно. *) Исправление: в директиве add_trailer. Изменения в nginx 1.19.6 15.12.2020 *) Исправление: ошибки "no live upstreams", если server в блоке upstream был помечен как down. *) Исправление: при использовании HTTPS в рабочем процессе мог произойти segmentation fault; ошибка появилась в 1.19.5. *) Исправление: nginx возвращал ошибку 400 на запросы вида "GET http://example.com?args HTTP/1.0". *) Исправление: в модулях ngx_http_flv_module и ngx_http_mp4_module. Спасибо Chris Newton. Изменения в nginx 1.19.5 24.11.2020 *) Добавление: ключ -e. *) Добавление: при сборке дополнительных модулей теперь можно указывать одни и те же исходные файлы в разных модулях. *) Исправление: SSL shutdown не работал при закрытии соединений с ожиданием дополнительных данных (lingering close). *) Исправление: при работе с gRPC-бэкендами могли возникать ошибки "upstream sent frame for closed stream". *) Исправление: во внутреннем API для обработки тела запроса. Изменения в nginx 1.19.4 27.10.2020 *) Добавление: директивы ssl_conf_command, proxy_ssl_conf_command, grpc_ssl_conf_command и uwsgi_ssl_conf_command. *) Добавление: директива ssl_reject_handshake. *) Добавление: директива proxy_smtp_auth в почтовом прокси-сервере. Изменения в nginx 1.19.3 29.09.2020 *) Добавление: модуль ngx_stream_set_module. *) Добавление: директива proxy_cookie_flags. *) Добавление: директива userid_flags. *) Исправление: расширение управления кэшированием stale-if-error ошибочно применялось, если бэкенд возвращал ответ с кодом 500, 502, 503, 504, 403, 404 или 429. *) Исправление: если использовалось кэширование и бэкенд возвращал ответы с строкой заголовка Vary, в логах могли появляться сообщения "[crit] cache file ... has too long header". *) Изменение: при использовании OpenSSL 1.1.1 в логах могли появляться сообщения "[crit] SSL_write() failed". *) Исправление: в логах могли появляться сообщения "SSL_shutdown() failed (SSL: ... bad write retry)"; ошибка появилась в 1.19.2. *) Исправление: при использовании HTTP/2 в рабочем процессе мог произойти segmentation fault, если ошибки с кодом 400 с помощью директивы error_page перенаправлялись в проксируемый location. *) Исправление: утечки сокетов при использовании HTTP/2 и подзапросов в модуле njs. Изменения в nginx 1.19.2 11.08.2020 *) Изменение: теперь nginx начинает закрывать keepalive-соединения, не дожидаясь исчерпания всех свободных соединений, а также пишет об этом предупреждение в лог ошибок. *) Изменение: оптимизация чтения тела запроса при использовании chunked transfer encoding. *) Исправление: утечки памяти при использовании директивы ssl_ocsp. *) Исправление: в логах могли появляться сообщения "zero size buf in output", если FastCGI-сервер возвращал некорректный ответ; ошибка появилась в 1.19.1. *) Исправление: в рабочем процессе мог произойти segmentation fault, если размеры large_client_header_buffers отличались в разных виртуальных серверах. *) Исправление: SSL shutdown мог не работать. *) Исправление: в логах могли появляться сообщения "SSL_shutdown() failed (SSL: ... bad write retry)". *) Исправление: в модуле ngx_http_slice_module. *) Исправление: в модуле ngx_http_xslt_filter_module. Изменения в nginx 1.19.1 07.07.2020 *) Изменение: директивы lingering_close, lingering_time и lingering_timeout теперь работают при использовании HTTP/2. *) Изменение: теперь лишние данные, присланные бэкендом, всегда отбрасываются. *) Изменение: теперь при получении слишком короткого ответа от FastCGI-сервера nginx пытается отправить клиенту доступную часть ответа, после чего закрывает соединение с клиентом. *) Изменение: теперь при получении ответа некорректной длины от gRPC-бэкенда nginx прекращает обработку ответа с ошибкой. *) Добавление: параметр min_free в директивах proxy_cache_path, fastcgi_cache_path, scgi_cache_path и uwsgi_cache_path. Спасибо Adam Bambuch. *) Исправление: nginx не удалял unix domain listen-сокеты при плавном завершении по сигналу SIGQUIT. *) Исправление: UDP-пакеты нулевого размера не проксировались. *) Исправление: проксирование на uwsgi-бэкенды с использованием SSL могло не работать. Спасибо Guanzhong Chen. *) Исправление: в обработке ошибок при использовании директивы ssl_ocsp. *) Исправление: при использовании файловых систем XFS и NFS размер кэша на диске мог считаться некорректно. *) Исправление: если сервер memcached возвращал некорректный ответ, в логах могли появляться сообщения "negative size buf in writer". Изменения в nginx 1.19.0 26.05.2020 *) Добавление: проверка клиентских сертификатов с помощью OCSP. *) Исправление: при работе с gRPC-бэкендами могли возникать ошибки "upstream sent frame for closed stream". *) Исправление: OCSP stapling мог не работать, если не была указана директива resolver. *) Исправление: соединения с некорректным HTTP/2 preface не логгировались.
Вот что ещё пишут чуваки из ispmanager:
Странная фигня какая-то, прикиньте теперь все нормально, apt update и apt upgrade без каких-либо ошибок отработали:
All packages are up to date.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Короче я думаю это дело в этом отстойном официальном репозитории nginx который я подключил, он походу временами то ли недоступен толи глючит подключение к нему хз это ИМХО, но поду что-то с ним не то, то нормально, то нет.
Короче это что-то с ихним репозиторием. Ну понятно опенсоурс, Дима ты много хочешь, чтобы просто было хорошо :-)
А почему бы просто не поставть актуальную версию ОС и не мучаться? Например Ubunty, Alma или Rocky?
К чему такие сложности? Или легаси какое то держит?
Так у меня и так актуальная версия Ubuntu server, давно и видимо скорее всего никогда не обновлялся и не обновится Nginx, ну я и подумал, да и тут на этом форуме мне как-то советовали подключить стандартные официальный репозиторий Nginx, да и обновить его, ну я и подумал вроде это не сложно и относительно беспроблемно, вот и попробовал :-)
Блин странная фигня, только вчера все было нормально, сегодня запускаю apt update и опять:
Ign:8 http://nginx.org/packages/ubuntu jammy InRelease
Err:9 http://nginx.org/packages/ubuntu jammy Release
404 Not Found [IP: 2a05:d014:5c0:2600::6 80]
Reading package lists... Done
E: The repository 'http://nginx.org/packages/ubuntu jammy Release' no longer has a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
Какой же он уродский этот Linux, что он хочет от меня, вчера же было все ОК, или ispmanager с его автообновлениями все испортил, или официальный репозиторий nginx лагает и неподключается к нему, ппц. вчера жал apt update все ОК, сегодня жму ошибка, ну Linux, ты не перестаешь быть таким каким ты есть 1%, беру свои слова назад про Ubuntu Debian это походу не из-за этого.
Капитан, что тебе мешает наконец пройти курс по Linux и Nginx, чтобы не плодить такие темы, если ты давно работаешь и у тебя масса свободного времени.
В целом можно обновится по этой инструкции, но есть пару нюансов.
Во-первых, нужно использовать команды для своей ОС, если для Ubuntu использовать от Debian, то будут ошибки, ну это из серии капитан очевидность.
Во-вторых, после подключения Nginx’овского репозитория, все вроде пройдет ОК, но при apt upgrade по автомату не обновится, также apt list –installed подскажет что типа есть обновления, можете посмотреть, добавив ключик –a, и там может быть доступно несколько версий.
Короче, чтобы обновилось пришлось набрать apt install nginx, только после этого до последней версии из ветки стейбл обновилось.
После обновления сразу крашится Nginx и не работает сайт, но если перезагрузить systemctl restart nginx, то все опять работает.
А, да при установки новой версии Nginx, прямо во время установки были какие-то дополнительные вопросы, я так понял там хотели заменить конфигурационные файлы дефолтовские типа nginx.conf и еще чёто, короче я ничего не менял жал enter типа оставить как есть, типа N, как я понял. Вроде конфигурационные файлы не затерлись.
Версия обновилась все работает вроде бы, сайт отображается.
Надеюсь теперь эксплойты через гугл будет сложнее искать.
Надеюсь теперь апгрейты по apt upgrade буту на автомате обновлять версию.
nginx.list
99nginx