Опубликован сервер приложений NGINX Unit 1.27.0, в рамках которого развивается решение для обеспечения запуска web-приложений на различных языках программирования (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js и Java). Под управлением NGINX Unit может одновременно выполняться несколько приложений на разных языках программирования, параметры запуска которых можно изменять динамически без необходимости правки файлов конфигурации и перезапуска. Код написан на языке Си и распространяется под лицензией Apache 2.0. С особенностями NGINX Unit можно познакомиться в анонсе первого выпуска...Подробнее: https://www.opennet.me/opennews/art.shtml?num=57293
QUIC там как?
QUIC везде никак. Потому что в OpenSSL его не завезли, а с BoringSSL будут связываться только те, кому это надо. Ну, вот они и не запарятся стать early adopters of nginx-quic. И поставят его в качестве реверс-прокси перед unit, если надо будет.
А для всех остальных, QUIC - это просто механизм общения гуглобраузера с гугловебсервером.
Но, пардон, есть же nghttp3/ngtcp2.
Выпустили то что успела сделать ру-команда до того как их всех уволили, чтоб дальше индусы не запутались в feature-ветках?
Может каких-то набивших оскомину и уволили под шумок, но судя по коммитам https://github.com/nginx/unit/commits/master все основные разработчики на месте.
Русских разработчиков в юните нет.
Основные разработчики уволились (отказались уезжать), я бы даже сказал главные.
А коммитят там тестировщик и слабенький разработчик.
а где писано, что их уволили? вон сколько уехало - увольняться что ли ?
Кто-то пользуется? Есть живые отзывы?
я пробовал, забил в пользу 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 и непредсказуемая интерференция этого с моими настройками.
Мне кажется, тут корень проблемы в неправильном выборе инструмента.
Пускать CGI-скрипты через сервер приложений - смысла абсолютно никакого, это две разные технологии.
> и наконец: прочитав про модную смузи-настройку "впихни json через локальный сокет", я почему-то решил что оно не сохраняет состояние вообще, как доскер-контейнер какой-то. неприятным сюрпризом оказалось наличие сохраненного состояния в /var/lib/unit/conf.json и непредсказуемая интерференция этого с моими настройками.Можно добавить параметр запуска --state /run/unit и добавить в конфиг systemd RuntimeDirectory=unit.
После этого runtime-конфиг будет сохраняться в /run/unit и очищаться при каждом перезапуске.
разумеется, можно очищать состояние в /etc/init.d/unit (какой systemd ? его там нет).но я считаю, надо выбрать одно их двух (xor):
1) олдовый статический конфиг, который нужно перечитывать например по получению SIGHUP.
2) хранить весь конфиг в памяти, ничего не сохранять, пусть пользователь
сам организует хранение и раздачу.
если у вас полтора юзера, то мб, а когда надо по взрослому, то какие альтернативы, кто умеет сертификат ссл на лету менять?
haproxy, envoy, caddy, да практически любой современный веб- и прокси-сервер.
> кто умеет сертификат ссл на лету менять?сделайте такой сертификат, чтобы покрывал все нужные имена. и ничего на лету менять не надо.
К сожалению, сертификаты виды *.tld частными лицам УЦ не выдают (NSA - может быть).
*.tld - это извините наглость.
простым людям достаточно *.myshitdomain.tld
а непростые справятся сами. или сделают свой карманный CA и заставят ему доверять всех кого надо.
А что же делать, если доменов второго уровня несколько?
И сертификаты живут максимум по три месяца, а потом обновлять надо, причём у каждого своя дата?
> но я считаю, надо выбрать одно их двух (xor):Обычно используется компромиссное решение - конфиг читается с диска при start/reload, а потом модифицируется через API, но все внесенные изменения живут только до перезапуска.
Очевидно, что unit, если каждый раз очищать state, тоже можно свести к этому частному случаю.
4) вдогонку: nextcloud у меня не завелся. то ли я дурак, то ли инструкция устарела.
Рабочий конфиг. Но у меня перед ним обычный 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
}
}
}
}
спасибо но уже поздно. я забил на nextcloud в пользу простого обычного git
с моей оберткой, inspired by SparkleShare, права доступа проверяет gitolite.
А можете подсказать конфиг nginx, который стоит перед unit?
Особенно интересуют блоки безопасности, типа location /remote { return 301 /remote.php$request_uri; }
> А можете подсказать конфиг nginx, который стоит перед unit?
> Особенно интересуют блоки безопасности, типа location /remote { return 301 /remote.php$request_uri;
> }Они все тут: https://docs.nextcloud.com/server/latest/admin_manual/instal...
Я адаптировал этот конфиг под себя и спефицику 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;
}
Я использую с Nextcloud на Arch, но спрятал за nginx обычный (потому что бэков много). Работает без нареканий. Документация не все нюансы раскрывает, но так и у самого nginx тоже.
Есть хоть один сумашедший кто это вместо томката использует?