The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Новые версии nginx 1.25.5 и форка FreeNginx 1.26.0

16.04.2024 22:06

Сформирован выпуск основной ветки nginx 1.25.5, в рамках которой продолжается развитие новых возможностей. В параллельно поддерживаемой стабильной ветке 1.24.x вносятся только изменения, связанные с устранением серьёзных ошибок и уязвимостей. В дальнейшем на базе основной ветки 1.25.x будет сформирована стабильная ветка 1.26. Код проекта написан на языке Си и распространяется под лицензией BSD.

Среди изменений:

  • В модуль stream добавлена поддержка виртуальных серверов, конфигурация которых определяется в блоке "server { ... }" при помощи директивы server_name.
    
       server {
           server_name ~^(www\.)?(.+)$;
           proxy_pass www.$2:12345;
       }
    
  • Добавлен новый модуль ngx_stream_pass_module, предназначенный для проброса принятых соединений напрямую в любой слушающий сокет, связанный с такими модулями, как http, stream и mail.
    
       stream {
           server {
               listen 12345 ssl;
    
               ssl_certificate     domain.crt;
               ssl_certificate_key domain.key;
    
               pass 127.0.0.1:8000;
           }
       }
    
  • В директиве listen модуля stream реализована поддержка параметров "deferred" (включает отложенный accept), "accept_filter" (фильтр входящих соединений, применяемый перед вызовом функции accept) и "setfib" (задание таблицы маршрутизации).
  • Для некоторых архитектур реализована поддержка определения размера блока (cache line), используемого для передачи данных между кэшем CPU и памятью.
  • На системах Apple Silicon добавлена поддержка пакетного менеджера Homebrew.
  • Решены проблемы с кросс-компиляцией для Windows.
  • Устранена ошибка, приводившая к закрытию соединений при использовании режима 0-RTT в протоколе QUIC.

Дополнительно можно отметить публикацию стабильной версии проекта FreeNginx 1.26.0, развивающего форк Nginx. Разработку форка ведёт Максим Дунин, один из ключевых разработчиков Nginx. FreeNginx позиционируется как некоммерческий проект, обеспечивающий разработку кодовой базы Nginx без корпоративного вмешательства. Выпуск 1.26.0 отмечен как стабильный релиз, вобравший в себя изменения и исправления из выпусков mainline-ветки Nginx 1.25. Среди прочего в состав FreeNginx 1.26.0 вошли экспериментальная поддержка протокола HTTP/3, улучшения для противодействия DoS-атакам и исправления, связанные с асинхронной обработкой ввода/вывода.

Одновременно состоялся выпуск njs 0.8.4, интерпретатора языка JavaScript для веб-сервера nginx. Интерпретатор njs реализует стандарты ECMAScript и позволяет расширять возможности nginx по обработке запросов с помощью скриптов в конфигурации. Скрипты могут использоваться в файле конфигурации для определения расширенной логики обработки запросов, формирования конфигурации, динамической генерации ответа, модификации запроса/ответа или быстрого создания заглушек с решением проблем в web-приложениях. В новой версии: в CLI добавлена поддержка JavaScript-движка QuickJS; добавлена возможность выставления заголовка Server; реализована проверка на дублирование переменных, выставленных через js_set.

  1. Главная ссылка к новости (http://nginx.org/#2024-04-16...)
  2. OpenNews: Выпуск Angie 1.5.0, российского форка Nginx
  3. OpenNews: Представлен FreeNginx, форк Nginx, созданный из-за несогласия с политикой компании F5
  4. OpenNews: В nginx 1.25.4 и Angie 1.4.1 устранены уязвимости, связанные с HTTP/3
  5. OpenNews: Уязвимости в ingress-nginx, позволяющие скомпрометировать кластеры Kubernetes
  6. OpenNews: Выпуск nginx 1.25.3, njs 0.8.2 и NGINX Unit 1.31.1
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/61003-nginx
Ключевые слова: nginx, freenginx
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (35) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, Аноним (-), 23:41, 16/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Выпуск 1.26.0 отмечен как стабильный релиз, вобравший в себя изменения
    > и исправления из выпусков mainline-ветки Nginx 1.25

    Т.е. git pull origin, как и предполагалось.
    А сколько пафоса было...

     
  • 1.4, Аноним (4), 23:47, 16/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Ждём LibreNginx под GPLv3.
     
     
  • 2.7, Аноним (7), 00:08, 17/04/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А что OpenNginx уже есть? А то может подсуетиться. Пакеты пересобирать я тоже могу.
     
     
  • 3.14, аннаним (?), 03:18, 17/04/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Забронирую NetNginx
     
  • 3.20, User (??), 06:57, 17/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Они вроде свой httpd из relayd скрафтили, если мне память не изменяет.
     
  • 3.22, Аноним (22), 08:26, 17/04/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А твой open он как открытое пиво или как открытая дверь? Надо уточнить по философии гну https://www.gnu.org/philosophy/free-sw.en.html
     
  • 3.24, Аноним (24), 09:17, 17/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не вздумайте занять FUNginx
     
     
  • 4.31, Аноним (31), 11:35, 17/04/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.30, Аноним (31), 11:33, 17/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Open- чаще ассоциируется с пермессивом.
     
     
  • 4.39, Аноним (39), 19:02, 17/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну или с Тео: "Для большей безопасности мы реализовали только 5% фич (но дыр от этого меньше не стало)"
    Например, OpenSMTPD.
     

  • 1.5, Аноним (5), 00:07, 17/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Паллиативная поддержка «более быстрого Апача» для легасных систем скукожилась до минорщины. А вся драма дунинского форка оказалась фарсом, в конце которого дунин просто нажал «Fetch and merge» на гитхабе.
     
     
  • 2.8, Аноним (-), 00:09, 17/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Дунин-Кулаков короче.
     
  • 2.23, Аноним (22), 08:29, 17/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Всё уже давно сидят на нормальных вебсерверах. В которых искоропки есть хелсчек для балансировщика, а не как в бесплатной версии нжинкса, где его нет.    
     
     
  • 3.38, Аноним (39), 19:00, 17/04/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    nginx обычно ставят перед одним апстримом, так что активный health check не имеет особого смысла.

    Там, где апстримов больше, лучше использовать специализированные прокси — Envoy, HAProxy.

     
     
  • 4.41, Аноним (22), 19:15, 17/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно не ставят у него же нет хелсчека, он есть в plus версии. А засовывание такого простого функционала в платку уже говорит о пути не туда и деградации. Опять же если бы хелсчек не был нужен его бы ни в какой версии не было.
     
     
  • 5.43, пох. (?), 07:25, 18/04/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тебе ж команда импортозаместителей сп-ла и шва6одно раздает... а, стоп, а вовсе и не шва6одно, это фича pro.

    > А засовывание такого простого функционала

    был бы он такой простой - ты бы его ведь сам за пол-часа написал, написал бы, ГА?!

     
  • 3.45, Аноним (45), 09:52, 18/04/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    https://opennet.ru/60722-pingora
     

  • 1.10, Аноним (10), 00:59, 17/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Извините, что не в курсе этих "корпоративных дрязг", но что и как мешает людям юзать оригинальный нгынкс? Я вот скачал бинарь для оффтопика - всё работает, денег не просит. Чё не так?
     
     
  • 2.11, Аноним (11), 01:31, 17/04/2024 Скрыто ботом-модератором     [к модератору]
  • +3 +/
     
  • 2.27, 1 (??), 10:10, 17/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну у каждого свои тараканы. Кому-то религия не позволяет, кому-то классовая ненависть.
    Если не парит, используй что работает.
     

  • 1.18, вася (??), 06:17, 17/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >>Выпуск 1.26.0 отмечен как стабильный релиз

    И сразу же
    >>в состав FreeNginx 1.26.0 вошли экспериментальная поддержка

    Проводим эксперименты и называем это стабильным релизом, ну нормально.

     
     
  • 2.29, Аноним (29), 10:24, 17/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Есть stable (где все более-менее стабилизировано), а есть mainline, который для прода. Всегда так было, в оригинале тоже.
     
  • 2.50, Аноним (50), 23:57, 26/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Четные версии - стабильные, нечетные версии - основные. Но вообще да, экспериментальные фичи, наверное, должны быть 1.27
     

  • 1.25, Ilya Indigo (ok), 09:41, 17/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У вас не возникало необходимости из nginx обратиться к redis У меня появилось н... большой текст свёрнут, показать
     
     
  • 2.26, 1 (??), 10:05, 17/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хм ... вроде Lua нормально к nginx подключается - всё по мануалу.

    ===================== ну типа заметки, надо бы функцию на opennet скрывать под котом :-) ==================
    Lua

    Alternatively, ngx_lua can be manually compiled into Nginx:

        LuaJIT can be downloaded from the latest release of OpenResty's LuaJIT fork. The official LuaJIT 2.x releases are also supported, although performance will be significantly lower for reasons elaborated above

    $ git clone https://github.com/openresty/luajit2
    $ cd luajit2
    $ make
    $ sudo make install

    (Возможно будет работать с стандартным libluajit-5.1-dev после apt-get install libluajit-5.1-dev.)

        Download the latest version of the ngx_devel_kit (NDK) module HERE (git clone https://github.com/vision5/ngx_devel_kit)
        Download the latest version of ngx_lua HERE (git clone https://github.com/openresty/lua-nginx-module)
        Download the latest supported version of Nginx HERE (See Nginx Compatibility) nginx-1.19.9.tar.gz

    Распаковываем в modules Указываем - куда установлен luajit (в нашем случае /usr/local)

    export LUAJIT_LIB=/path/to/luajit/lib
    export LUAJIT_INC=/path/to/luajit/include/luajit-2.1

    Добавляем в configure -

    --add-module=modules/ngx_devel_kit \
    --add-module=modules/lua-nginx-module \
    --add-module=modules/ModSecurity-nginx

    или

    --add-dynamic-module=modules/ngx_devel_kit \
    --add-dynamic-module=modules/lua-nginx-module \
    --add-dynamic-module=modules/ModSecurity-nginx

     
     
  • 3.48, Ilya Indigo (ok), 11:03, 19/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Благодарю!
    Вся моя проблема была в отсутствии 2-ой строки.

    export LUAJIT_INC=%{_includedir}/luajit-5_1-2.1
    export LUAJIT_LIB=%{_libdir}

    Видимо если переопределяю LUAJIT_INC то нужно сразу и переопределить LUAJIT_LIB даже если она стандартная.

    Луамодуль собрал, буду собирать lua-resty-redis.

    P.S. /var/log/nginx/error.log

    2024/04/19 11:21:48 [alert] 23985#23985: detected a LuaJIT version which is not OpenResty's; many optimizations will be disabled and performance will be compromised (see https://github.com/openresty/luajit2 for OpenResty's LuaJIT or, even better, consider using the OpenResty releases from https://openresty.org/en/download.html)
    2024/04/19 11:21:48 [alert] 23985#23985: failed to load the 'resty.core' module (https://github.com/openresty/lua-resty-core); ensure you are using an OpenResty release from https://openresty.org/en/download.html (reason: module 'resty.core' not found:
    no field package.preload['resty.core']
    no file './resty/core.lua'
    no file '/usr/share/luajit-5_1-2.1/resty/core.lua'
    no file '/usr/local/share/lua/5.1/resty/core.lua'
    no file '/usr/local/share/lua/5.1/resty/core/init.lua'
    no file '/usr/share/lua/5.1/resty/core.lua'
    no file '/usr/share/lua/5.1/resty/core/init.lua'
    no file './resty/core.so'
    no file '/usr/local/lib/lua/5.1/resty/core.so'
    no file '/usr/lib64/lua/5.1/resty/core.so'
    no file '/usr/local/lib/lua/5.1/loadall.so'
    no file './resty.so'
    no file '/usr/local/lib/lua/5.1/resty.so'
    no file '/usr/lib64/lua/5.1/resty.so'
    no file '/usr/local/lib/lua/5.1/loadall.so') in /etc/nginx/nginx.conf:67

    Ещё и lua-resty-core нужен.

     
  • 2.28, 1 (??), 10:13, 17/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Чуть не забыл -
    lua_package_path "/usr/share/nginx/lib/lua/?.lua;;";
    в секцию http.
     
  • 2.40, Аноним (39), 19:04, 17/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем тащить это всё в event loop сервера?
    Если что, исполнение lua там блокирующее, так что если redis отвалится — встанет весь веб-сервер.

    Лучше сделайте external authz https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-subrequ

     
     
  • 3.44, Ilya Indigo (ok), 09:02, 18/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вы вообще читали изначальную техническую задачу, 2-ой абзац?

    > Зачем тащить это всё в event loop сервера?

    Затем, что в nginx и в его кучи новодельных форках нету простой возможности обратиться к redis и получать от него данные. Мне самому этот луа 300 лет не нужен, но по другому к redis не обратиться, а вешать отдачу статики на php-fpm мне очень не хочется.

    > Лучше сделайте external authz https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-subrequ

    И как этот external authz будет обращаться к redis?

     
     
  • 4.49, Аноним (49), 03:00, 20/04/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да как угодно. Десять строк кода на golang, например
     
  • 2.46, Alex_K (??), 20:39, 18/04/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ваша задача неплохо решится через X-Accel-Redirect
     
     
  • 3.47, Ilya Indigo (ok), 09:12, 19/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Моя задача НЕ решается с помощью этого заголовка!
    X-Accel-Redirect может лишь более безопасно скрыть реальный путь защищённого статического контента, но обращение к redis за авторизацией он не выполнит.
     

  • 1.33, Аноним (33), 12:01, 17/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Скрепно, но мы используем реализацию от cloudflare на хрусте.
     
  • 1.35, Роман (??), 18:10, 17/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Добавлен новый модуль ngx_stream_pass_module, предназначенный для проброса принятых соединений напрямую в любой слушающий сокет, связанный с такими модулями, как http, stream и mail.

    В чем предназначение и удобство кроме некоего синтаксического сахара, какой вариант предпочтительного использования?

     
     
  • 2.42, Аноним (22), 19:21, 17/04/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Может что конфиг самодокументировался и было меньше магии?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру