The OpenNET Project / Index page

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

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

03.06.2022 08:06

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

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

  • Добавлена возможность использования переменных и пустых значений в директиве "location", привязанных к действиям "return".
  • Упрощено перенаправление HTTP-запросов на HTTPS. Добавлена новая переменная $request_uri, содержащая URI запроса, которую можно использовать при определении маршрута в качестве параметра директивы "location" внутри блока "action":
    
    
    {
        "listeners": {
            "*:443": {
                "tls": {
                    "certificate": "example.com"
                },
                "pass": "routes"
            },
            "*:80": {
                "pass": "routes"
            }
         },
    
        "routes": [
            {
                "match": {
                    "scheme": "http"
                },
                "action": {
                    "return": 301,
                    "location": "https://${host}${request_uri}"
                }
            }
    }
    
  • Предоставлена возможность настройки имени файла, отличного от index.html, который будет отдан при обращении с указанием только каталога (например, site.com/cms/).
    
    "routes": [
        {
            "match": {
                "uri": "/cms/*"
            },
            "action": {
                "share": "/var/cms$uri",
                "index": "default.html"
            }
        },
        {
            "action": {
                "share": "/var/www$uri"
            }
        }
    ]
    
  • Для Ruby Rack реализована установка переменной окружения "SCRIPT_NAME".
  • Обеспечена совместимость с GCC 12.


  1. Главная ссылка к новости (https://unit.nginx.org/news/20...)
  2. OpenNews: Релиз nginx 1.22.0
  3. OpenNews: Игорь Сысоев ушёл из компаний F5 Network и покинул проект NGINX
  4. OpenNews: Выпуск сервера приложений NGINX Unit 1.26.0
  5. OpenNews: Спор о правах Rambler на Nginx продолжен в суде США
  6. OpenNews: Выпуск njs 0.4.0. Rambler отправил ходатайство о прекращении уголовного дела против Nginx
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/57293-unit
Ключевые слова: unit, nginx
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (26) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, lockywolf (ok), 08:12, 03/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    QUIC там как?
     
     
  • 2.6, Аноним (6), 11:58, 03/06/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    QUIC везде никак. Потому что в OpenSSL его не завезли, а с BoringSSL будут связываться только те, кому это надо. Ну, вот они и не запарятся стать early adopters of nginx-quic. И поставят его в качестве реверс-прокси перед unit, если надо будет.
    А для всех остальных, QUIC - это просто механизм общения гуглобраузера с гугловебсервером.
     
     
  • 3.9, Аноним (9), 13:28, 03/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Но, пардон, есть же nghttp3/ngtcp2.
     

  • 1.2, Аноним (2), 08:17, 03/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Выпустили то что успела сделать ру-команда до того как их всех уволили, чтоб дальше индусы не запутались в feature-ветках?
     
     
  • 2.3, Аноним (3), 09:00, 03/06/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Может каких-то набивших оскомину и уволили под шумок, но судя по коммитам https://github.com/nginx/unit/commits/master все основные разработчики на месте.
     
     
  • 3.29, Товарищ (?), 11:47, 07/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Русских разработчиков в юните нет.
    Основные разработчики уволились (отказались уезжать), я бы даже сказал главные.
    А коммитят там тестировщик и слабенький разработчик.
     
  • 2.4, AS (??), 09:02, 03/06/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    а где писано, что их уволили? вон сколько уехало - увольняться что ли ?
     

  • 1.5, Аноним (5), 09:08, 03/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Кто-то пользуется? Есть живые отзывы?
     
     
  • 2.8, john_erohin (?), 13:24, 03/06/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    я пробовал, забил в пользу lighttpd.

    1) старый злой перл-скрипт http://snm.sourceforge.net/ не завелся. он CGI а unit поддерживат только psgi. после обертки в psgi-враппер как его там - опять не завелся.

    2) отдача статики так себе, индексы надо делать вручную с помощью tree, добавлять user-defined http headers в http responce не умеет.

    3) и наконец: прочитав про модную смузи-настройку "впихни json через локальный сокет", я почему-то решил что оно не сохраняет состояние вообще, как доскер-контейнер какой-то. неприятным сюрпризом оказалось наличие сохраненного состояния в /var/lib/unit/conf.json и непредсказуемая интерференция этого с моими настройками.

     
     
  • 3.11, Аноним (6), 13:51, 03/06/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мне кажется, тут корень проблемы в неправильном выборе инструмента.
    Пускать CGI-скрипты через сервер приложений - смысла абсолютно никакого, это две разные технологии.
     
  • 3.14, Аноним (6), 15:15, 03/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > и наконец: прочитав про модную смузи-настройку "впихни json через локальный сокет", я почему-то решил что оно не сохраняет состояние вообще, как доскер-контейнер какой-то. неприятным сюрпризом оказалось наличие сохраненного состояния в /var/lib/unit/conf.json и непредсказуемая интерференция этого с моими настройками.

    Можно добавить параметр запуска --state /run/unit и добавить в конфиг systemd RuntimeDirectory=unit.
    После этого runtime-конфиг будет сохраняться в /run/unit и очищаться при каждом перезапуске.

     
     
  • 4.18, john_erohin (?), 14:08, 04/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    разумеется, можно очищать состояние в /etc/init.d/unit (какой systemd ? его там нет).

    но я считаю, надо выбрать одно их двух (xor):

    1) олдовый статический конфиг, который нужно перечитывать например по получению SIGHUP.

    2) хранить весь конфиг в памяти, ничего не сохранять, пусть пользователь
    сам организует хранение и раздачу.

     
     
  • 5.19, 67 (?), 15:56, 04/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    если у вас полтора юзера, то мб, а когда надо по взрослому, то какие альтернативы, кто умеет сертификат ссл на лету менять?
     
     
  • 6.22, Аноним (6), 17:59, 04/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    haproxy, envoy, caddy, да практически любой современный веб- и прокси-сервер.
     
  • 6.24, john_erohin (?), 08:39, 05/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > кто умеет сертификат ссл на лету менять?

    сделайте такой сертификат, чтобы покрывал все нужные имена. и ничего на лету менять не надо.

     
     
  • 7.26, Аноним (6), 11:49, 05/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    К сожалению, сертификаты виды *.tld частными лицам УЦ не выдают (NSA - может быть).
     
     
  • 8.27, john_erohin (?), 13:25, 05/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    tld - это извините наглость простым людям достаточно myshitdomain tld а неп... текст свёрнут, показать
     
     
  • 9.28, Аноним (6), 14:44, 05/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А что же делать, если доменов второго уровня несколько И сертификаты живут макс... текст свёрнут, показать
     
  • 5.23, Аноним (6), 18:04, 04/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > но я считаю, надо выбрать одно их двух (xor):

    Обычно используется компромиссное решение - конфиг читается с диска при start/reload, а потом модифицируется через API, но все внесенные изменения живут только до перезапуска.

    Очевидно, что unit, если каждый раз очищать state, тоже можно свести к этому частному случаю.

     
  • 2.10, john_erohin (?), 13:32, 03/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    4) вдогонку: nextcloud у меня не завелся. то ли я дурак, то ли инструкция устарела.
     
     
  • 3.21, noname.htm (ok), 16:08, 04/06/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Рабочий конфиг. Но у меня перед ним обычный nginx ещё стоит.
    {
      "settings": {
        "http": {
          "header_read_timeout": 10,
          "body_read_timeout": 10,
          "send_timeout": 600,
          "idle_timeout": 120,
          "max_body_size": 536870912
        }
      },
      "access_log": "/var/log/nginx-unit-access.log",
      "listeners": {
        "127.0.0.1:8300": {
          "pass": "applications/nextcloud"
        }
      },
      "applications": {
        "nextcloud": {
          "type": "php",
          "root": "/usr/share/webapps/nextcloud",
          "user": "nextcloud",
          "group": "nextcloud",
          "processes": {
            "max": 10,
            "spare": 3,
            "idle_timeout": 20
          }
        }
      }
    }
     
     
  • 4.25, john_erohin (?), 08:45, 05/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    спасибо но уже поздно. я забил на nextcloud в пользу простого обычного git
    с моей оберткой, inspired by SparkleShare, права доступа проверяет gitolite.
     
  • 4.30, VVL (ok), 15:56, 06/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А можете подсказать конфиг nginx, который стоит перед unit?
    Особенно интересуют блоки безопасности, типа location /remote { return 301 /remote.php$request_uri; }
     
     
  • 5.31, noname.htm (ok), 23:19, 09/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > А можете подсказать конфиг nginx, который стоит перед unit?
    > Особенно интересуют блоки безопасности, типа location /remote { return 301 /remote.php$request_uri;
    > }

    Они все тут: https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html
    Я адаптировал этот конфиг под себя и спефицику unit. Ключевое:
        location ~ \.php(?:$|/) {
            # Required for legacy support
            rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri;

            fastcgi_split_path_info ^(.+?\.php)(/.*)$;
            try_files $fastcgi_script_name =404;

            proxy_pass http://127.0.0.1:8300;
            proxy_redirect off;

            proxy_set_header Host            $host;
            proxy_set_header X-Forwarded-For $remote_addr;
        }

     
  • 2.20, noname.htm (ok), 16:05, 04/06/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я использую с Nextcloud на Arch, но спрятал за nginx обычный (потому что бэков много). Работает без нареканий. Документация не все нюансы раскрывает, но так и у самого nginx тоже.
     

  • 1.13, жявамэн (ok), 14:28, 03/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Есть хоть один сумашедший кто это вместо томката использует?
     

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



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

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