Выпуск сервера приложений NGINX Unit 1.16.0

Состоялся выпуск сервера приложений NGINX Unit 1.16, в рамках которого развивается решение для обеспечения запуска web-приложений на различных языках программирования (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js и Java). Под управлением NGINX Unit может одновременно выполняться несколько приложений на разных языках программирования, параметры запуска которых можно изменять динамически без необходимости правки файлов конфигурации и перезапуска. Код написан на языке Си и распространяется под лицензией Apache 2.0. С особенностями NGINX Unit можно познакомиться в анонсе первого выпуска.

В новой версии:

  • Добавлена поддержка балансировки нагрузки в режиме round-robin. Например, для распределения нагрузки на два сервера 192.168.0.100 и 192.168.0.101 с направлением на второй в два раза больше запросов можно использовать следующую конструкцию:

    «upstreams»: {
    «rr-lb»: {
    «servers»: {
    «192.168.0.100:8080»: { },
    «192.168.0.101:8080»: { «weight»: 2 }
    }
    }
    }

  • Реализована возможность задания гибких правил маршрутизации запросов, похожих на функциональность «try_files» в nginx. Дополнительный маршрут задаётся при помощи директивы «fallback», которая срабатывает, если запрошенный файл не найден в пути, определённом через директиву «share». Например, для того чтобы вызвать обработчик на PHP в случае отсутствия файла в каталоге /data/www/ можно указать:

    {
    «share»: «/data/www/»,
    «fallback»: {
    «pass»: «applications/php»
    }
    }

    Допускается использование вложенных блоков «fallback». Например, если файла нет в /data/www/, можно попытаться выдать его из /data/cache/, а если нет и там, перенаправить запрос на другой бэкенд:

    {
    «share»: «/data/www/»,

    «fallback»: {
    «share»: «/data/cache/»,

    «fallback»: {
    «proxy»: «http://127.0.0.1:9000»
    }
    }
    }

  • В загружаемых в формате JSON параметрах конфигурации обеспечено удаление комментариев в стиле JavaScript («//…» и «/* … */») и чистка маркеров последовательности байтов (UTF-8 BOM), что может быть полезно в случае ручного редактирования параметров в JSON.
  • Снижено потребление памяти за счёт сбрасывания тела очень больших запросов на диск.

Источник: opennet.ru

Добавить комментарий