The OpenNET Project / Index page

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

Выпуск nginx 1.17.0 и njs 0.3.2

21.05.2019 22:15

Представлен первый выпуск новой основной ветки nginx 1.17, в рамках которой будет продолжено развитие новых возможностей (в параллельно поддерживаемой стабильной ветке 1.16 вносятся только изменения, связанные с устранением серьёзных ошибок и уязвимостей).

Основные изменения:

  • Добавлена поддержка переменных в директивах "limit_rate" и "limit_rate_after", а также в директивах "proxy_upload_rate" и "proxy_download_rate" модуля stream;
  • Повышены требования к минимально поддерживаемой версии OpenSSL - 0.9.8;
  • По умолчанию обеспечена сборка модуля ngx_http_postpone_filter_module;
  • Решены проблемы с неработоспособностью директивы "include" внутри блоков "if" и "limit_except";
  • Исправлена ошибка при обработке байтовых значений "Range".

Из значительных улучшений, которые ожидаются в ветке 1.17, упоминается реализация поддержки протоколов QUIC и HTTP/3.

Дополнительно можно отметить выпуск njs 0.3.2, интерпретатора языка JavaScript для веб-сервера nginx. Интерпретатор njs реализует стандарты ECMAScript и позволяет расширять возможности nginx по обработке запросов с помощью скриптов в конфигурации. Скрипты могут использоваться в файле конфигурации для определения расширенной логики обработки запросов, формирования конфигурации, динамической генерации ответа, модификации запроса/ответа или быстрого создания заглушек с решением проблем в web-приложениях.

В новом выпуске njs добавлена поддержка шаблонов строк, определённых в спецификации ECMAScript 6. Шаблоны строк являются строковыми литералами, допускающими встраивание выражений. Выражения определяются в размещённом внутри строки блоке ${...}, который может включать как отдельные переменные (${name}), так и выражения (${5 + a + b})). Кроме того, добавлена поддержка именованных групп в объекте RegExp, позволяющих связать сопоставленные регулярным выражением части строки с определёнными именами вместо порядковых номеров совпадений. Добавлена поддержка сборки с библитекой GNU Readline.

  1. Главная ссылка к новости (https://www.nginx.com/blog/ngi...)
  2. OpenNews: Сделка по покупке NGINX компанией F5 Networks успешно завершена
  3. OpenNews: Релиз nginx 1.16.0
  4. OpenNews: Выпуск nginx 1.15.10 и njs 0.3.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/50718-nginx
Ключевые слова: nginx
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (17) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Ъ (?), 22:26, 21/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    С точки зрения производительности и потребления ресурсов, что лучше - встроенный Lua или JS?
     
     
  • 2.2, Кампуча (?), 22:31, 21/05/2019 [^] [^^] [^^^] [ответить]  
  • –10 +/
    LUA - это сторонний модуль сторонних разработчиков. njs - модуль от авторов, выводы делай сам. (njs выигрывает, такой должен быть вывод)
     
     
  • 3.3, Evgeny Orlov (?), 22:53, 21/05/2019 [^] [^^] [^^^] [ответить]  
  • +12 +/
    Lua + nginx это уже openresty. он архитектурно идет немного в разрез с nginx. Но в целом свою задачу решает.
    njs быстрый потому что поддерживает только основные элементы ECMAScript и интерпретатором выступает не v8, а самописный движок заделанный под экосистему nginx
     
  • 2.4, KonstantinB (ok), 23:26, 21/05/2019 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Не думаю, что вы заметите разницу, если вы не Фейсбук. Но вообще njs должен быть пошустрее, поскольку теснее интегрирован.

    А вообще, lua-модуль - это причина, по которой в nginx стали делать njs. В lua-модуле используется ряд костылей для интеграции с nginx, типа залезания во внутренние API и структуры nginx-а, неизменность которых никто никогда не гарантировал, но ввиду популярности lua-модуля в том числе и у коммерческих пользователей они вынуждены поддерживать совместимость nginx (в том числе nginx-plus) с lua-модулем (или самостоятельно патчить его под новые версии). В какой-то момент им это все явно поднадоело.

     
  • 2.5, Аноним (5), 23:54, 21/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    поскольку ни в том ни в другом нет jit, а схема работы в них одинаковая - существенной разницы не может быть (до тех пор пока они используются по назначению).
     
     
  • 3.6, Аноним (6), 01:45, 22/05/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Подозреваю, что для типичного применения в 2-3 строки кода от jit-а будет больше вреда, чем пользы.
     
     
  • 4.8, Аноним (8), 10:34, 22/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А почему нельзя сделать так, чтобы jit работал только когда быстрее?
    Чёто типа уровня оптимизации. И почему низя кэшировать результаты?
    Эта жаба не кэшируит (кажется). (хотя у неё уже на входе бинарный код для машины) И при каждом новом запуске она делает одну и ту же работу по оптимизации того же кода (вроде).
    И меня раздражает, что она так долго запускает программы.
    Почему нельзя запускать их в первом уровне оптимизации (быстро), а потом уже в отдельном потоке щитать? (И чем больше вызывается код - тем лучше его оптимизировать, например).
    Но ведь jvm делают не дураки (а вот я - дурак), им что то мешает?
    Почему нельзя ВСЁ закешировать???
     
     
  • 5.10, Аноним (10), 11:30, 22/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Почему нельзя запускать их в первом уровне оптимизации (быстро), а потом уже в отдельном потоке щитать?

    В web js-ных движках так и сделано.
    А вот Java в её мире запускается один раз в неделю (месяц, год, 10 лет?) и работает, работает, работает. При таком подходе вообще глубоко фиолетово, сколько времени оно запускается. И за такое время работы накапливается статистика запуска функций огого.

    >  (И чем больше вызывается код - тем лучше его оптимизировать, например).

    Гляньте, например, параметр XX:CompileThreshold (дефолт 10000).

    Вообще, в Яве я профан. Так что оправьте, если что.
    Всё это похоже на, так сказать, серверный профиль использования. И что там на декстопе прога запускается и закрывается каждые 10 минут - ну ой. Может, так есть какой-то "десктопный" профиль.

     
  • 5.15, KonstantinB (ok), 21:42, 22/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > А почему нельзя сделать так, чтобы jit работал только когда быстрее?

    Потому что если вы хотите засунуть программу в 100 000 строк кода в nginx, вы не должны этого хотеть. Пишите на nodejs и проксируйте на него (или используйте nginx unit).

    Nginx - не application server. Назначение этих модулей - реализация конфигураций, для которых не хватает встроенных возможностей nginx, а на таких микроскопических объемах кода от JIT-а никогда не будет особого толку. Если и будет, то недалеко от погрешности измерения.

     
  • 3.7, hand (?), 09:10, 22/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    есть lua jit
    https://openresty.org/en/luajit.html
     
  • 3.14, irinat (ok), 16:47, 22/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > ни в том ни в другом нет jit

    Lua-модуль для Nginx проектировался под LuaJIT, хоть и с поддержкой Lua 5.1. Не знаю, зачем им поддержка Lua 5.1, потому что даже в режиме интерпретатора LuaJIT быстрее.


     
  • 3.17, Аноним (17), 18:12, 23/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >поскольку ни в том ни в другом нет jit

    Вообще-то в lua-nginx-module как раз LuaJIT используется

     

  • 1.9, Аноним (-), 10:56, 22/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    QUIC http/3 в какой версии ожидается?
     
     
  • 2.11, Аноним (11), 11:51, 22/05/2019 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Надеюсь, что никогда.
     
     
  • 3.12, Ан.Зонд (?), 13:49, 22/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Товарищ мамакин майор как вам не стыдно?
     
  • 3.13, гуглезила (?), 16:31, 22/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    а не будете делать что велим - отключим газ...то есть гугль...то есть интернет вообще.

     
  • 2.16, KonstantinB (ok), 21:45, 22/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    В тексте новости написано, что ожидается в ветке 1.17.
    Посмотрите на цикл релизов nginx и сделайте выводы.
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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