Выпуск сервера приложений 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.
  • Снижено потребление памяти за счёт сбрасывания тела очень больших запросов на диск.



Источник: http://www.opennet.ru/opennews/art.shtml? num=52536

© OpenNet