Выпуск сервера дадаткаў 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

Дадаць каментар