Добрый день уважаемые!
Выставляю на Ваш суд свою поделку. Просьба сильно не пинать:) Конечно ещё
сыровата... но я уже кушаю:)))
Просто не нашёл аналогичного... может плохо искал.... вот и пришлось
покодить немножко. Надеюсь полезная будет:)
Сервис "ITCOD-DISK" Облачное хранилище.
-- Copyright (c) 2015 by Yura Vdovytchenko (max(a)itcod.com)
-- Copyright (c)itcod 2010-2015
-- version: 15.06.27
-- license: MIT
Назначение: Сетевой диск(хранилище) файлов по технологии WEBDAV.
С публикацией по http/https и индексный файл с контрольными суммами
md5/etc.
Предназначен для хранения и публикации NoSQL информационных массивов.
Принцип: Сервис-ориентированная архитектура построения. Nginx обеспечивает
стандартный протокол WEBDAV over HTTP/HTTPS. Lua-модули itcod обеспечивают
расширение функций и сетевые сервисы управления ITCOD-DISK'ом.
ITCOD UI WWII обеспечивает WEB-интерфейс между пользователем и сервисами.
ОТЛИЧИЕ ОТ АНАЛОГОВ
NoLAMP NoLEMP NoSQL SOA
На сервере только Nginx + Lua и никаких PHP SQL и т.д.
БАЗОВЫЕ КОМПОНЕНТЫ ITCOD-DISK
LINUX - операционная система
NGINX - http daemod (with WebDAV and Lua)
LUA - язык программирования
Resty - библиотека Lua
add - дополнительные библиотеки (см. require в *.lua)
ITCOD Lua Modules & Services - модули SOA ITCOD для операций с хранилищем
ITCOD WWII - web-интерфейс для ITCOD-DISK (в разработке)
БАЗОВЫЕ КОМПОНЕНТЫ ITCOD Lua Modules & Services
auth-dav.lua - авторизатор для HTTP/HTTPS/WEBDAV
md5index.lua - расширитель функций autoindex NGINX
itcod-user.lua - создание пользовательских юзербоксов на диске WEBDAV
itcod-exchange.lua - сервис транспорта файлов между пользователями и
дисками
itcod-search.lua - REST-сервис авторизованного поиска информации в закрытых
пользовательских массивах
libs/ - библиотека иконок типов файлов для md5index
Подробнее о компанентах см. https://ihome.itcod.com/max/project/
КОНФИГУРАЦИЯ NGINX
nginx version: nginx/1.7.11
built by gcc 4.4.4 20100630 (Red Hat 4.4.4-10) (GCC)
TLS SNI support enabled
configure arguments:
--prefix=/usr/share/nginx
--sbin-path=/usr/sbin/nginx
--conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--http-client-body-temp-path=/var/lib/nginx/tmp/client_body
--http-proxy-temp-path=/var/lib/nginx/tmp/proxy
--http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi
--http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi
--http-scgi-temp-path=/var/lib/nginx/tmp/scgi
--pid-path=/run/nginx.pid
--lock-path=/run/lock/subsys/nginx
--user=nginx
--group=nginx
--with-pcre-jit
--with-debug
--with-file-aio
--with-ipv6
--with-http_ssl_module
--with-http_realip_module
--with-http_addition_module
--with-http_xslt_module
--with-http_image_filter_module
--with-http_geoip_module
--with-http_sub_module
--with-http_dav_module
--add-module=/usr/src/nginx-dav-ext-module-master
--with-http_flv_module
--add-module=/usr/src/f4f-hds-master
--with-http_mp4_module
--with-http_gzip_static_module
--with-http_random_index_module
--with-http_secure_link_module
--with-http_degradation_module
--with-http_stub_status_module
--with-http_perl_module --with-mail
--with-mail_ssl_module
--with-http_auth_request_module
--add-module=/usr/src/echo-nginx-module-master
--add-module=/usr/src/nginx_md5_filter-master
--add-module=/usr/src/ngx_devel_kit-master
--add-module=/usr/src/lua-nginx-module-master
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
-fstack-protector
--param=ssp-buffer-size=4 -m64 -mtune=generic'
--with-ld-opt=' -Wl,-E,-rpath,/usr/local/lib'
КОНФИГУРАЦИЯ ВИРТУАЛЬНОГО WEB-СЕРВЕРА (WEBDAV)
Приведена конфигурация nginx работающего на виртуальной машине
за проксирующим первичным nginx. Для работы на первичном вам необходимо
изменить listen на 80 и 443. А так же не забудьте поправить основные
настройки на ваши собственные (имена сервера и т.д.)
Файл ihome.conf
server {
listen 7070;
server_name "~^ihome\d+\.itcod\.com$"
ihome.virtual.ko
ihome.itcod.com
;
server_name_in_redirect off;
expires epoch;
ssl off;
#default_type application/octet-stream;
set_real_ip_from 10.255.255.7;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
access_log /var/log/nginx/ihome.itcod.com-access.log main;
resolver 10.255.255.1 [::1]:5353;
charset utf-8;
set $dir /opt/home;
set $testdir $dir$uri;
set $uri_type none;
if (-d $testdir) { # такая папка есть
set $uri_type dir;
rewrite ^(.*)$ $1/;
rewrite ^(.*)/+$ $1/;
}
if (-f $testdir) { # такой файл есть
set $uri_type file;
}
if ($request_method = "MKCOL") {
rewrite ^(.*)$ $1/;
rewrite ^(.*)/+$ $1/;
set $uri_type dir; #клиент webdav создает папку
}
if ($request_method = "PUT") {
set $uri_type file; #передаем только файлы
}
if ($request_method = "POST") {
set $uri_type file; #постим только файлы
}
set $sadm_passwd .uhtpsw;
set $user_passwd .htpasswd; #user:password[crypt(3)/md5/sha1]
set $user_permit .htpermit; #user:GET,PUT,....OPTIONS
set $user_permit_default GET,PROPFIND,OPTIONS; # Allow
merge_slashes on;
location / {
limit_req zone=itcod burst=200 nodelay;
limit_rate 2048k;
access_by_lua_file /etc/nginx/lua/auth-dav.lua;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
create_full_put_path on;
dav_access user:rw group:rw;
client_body_temp_path /opt/itcod-dav.tmp/;
client_max_body_size 0;
autoindex on;
root $dir;
header_filter_by_lua_file /etc/nginx/lua/itcod-exchange.lua;
set $md5index on; #on/off nil=off # вкл/выкл обработчик
set $md5index_hash md5; #none/md5/md4/sha1/sha/ripemd160 nil=none # тип
выводых хэшей
set $md5index_size 50000; #kb nil=unlimit # не считать для файлов более N
kb
set $md5index_path on; #on/off nil=off # заменять относительный путь
ссылок на полный URI
set $md5index_nonblank on; #on/off nil=off # заменить множественные пробелы
одним
set $md5index_type on; #on/off nil=off # добавит в строки описание типа
file/directory/etc...
set $md5index_ico http://ihome.itcod.com/max/projects/libs/icons16ext/; #
путь к библиотека иконок
set $md5index_icopref icon-; # префикс имени файла иконки
#set $md5index_icosuf -icon; # суфикс имени файла иконки
set $md5index_icoext .gif; # расширение файла иконки
set $md5index_win _blank; # target window for !winext! files
set $md5index_winext htm.html.txt; # file extension for target windows
body_filter_by_lua_file /etc/nginx/lua/md5index.lua; # addon
обработчик
}
location ~/\.uht {
deny all;
}
location /search/ {
content_by_lua_file /etc/nginx/lua/itcod-search.lua;
}
location /user/ {
content_by_lua_file /etc/nginx/lua/itcod-user.lua;
}
}
ПРИМЕЧАНИЕ
Для программистов адекватных perl, проблем определить и загрузить
недостающие
модули require не составит труда. В случае если у вас, что то не получается
пишите тут или на max(a)itcod.com обязательно помогу.
ТЕКУЩИЕ РАБОТЫ
Формирование WebUI ITCOD-DISK
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,259941,259941#msg-259941
Здравствуйте!
У меня наверное быстро решимая
проблема, но я просто решение вопроса
не вижу.
Работает у меня nginx 1.0.8
--------
nginx: nginx version: nginx/1.0.8
nginx: configure arguments: --with-http_gzip_static_module
--with-openssl=/usr/include --with-http_stub_status_module
--http-proxy-temp-path=/dev/shm/nginx/proxy_temp
--http-fastcgi-temp-path=/dev/shm/nginx/fastcgi_temp
--http-uwsgi-temp-path=/dev/shm/nginx/uwsgi_temp
--http-scgi-temp-path=/dev/shm/nginx/scgi_temp
--http-client-body-temp-path=/dev/shm/nginx/client_body_temp
--http-log-path=/var/log/nginx/access.log
--error-log-path=/var/log/nginx/error.log
--conf-path=/etc/nginx/nginx.conf --user=www-data --group=www-data
--------
и в соответствующем файле у меня стоит
в секции Server:
--------
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
------
всё такие я получаю ошибку 404, когда я на
сервере наберу "GET domain/status"
В чем может состоить проблема?
Спасибо вам большое.
Андрей
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,216178,216178#msg-216178
Здравствуйте.
Рад сообщить о выпуске новой версии NGINX Unit.
В этом выпуске мы продолжили развивать возможности внутренней маршрутизации
для более разнообразного и точного распределения запросов. Кроме того, для
упрощения работы с массивами в конфигурации, управляющий API теперь поддерживает
операции POST.
Документация по новым возможностям:
- Правила сопоставления: https://unit.nginx.org/configuration/#condition-matching
- Операции в API: https://unit.nginx.org/configuration/#configuration-management
Также доступна запись митапа NGINX, где хорошо рассказывается про динамическую
маршрутизацию для приложений, хотя туда не вошли новые функции из этого выпуска:
- https://www.youtube.com/watch?v=5O4TjbbxTxw
Ещё было исправлено несколько досадных ошибок, а благодаря вашим отзывам модуль
Node.js теперь поддерживает ещё больше приложений.
Изменения в Unit 1.9.0 30.05.2019
*) Добавление: маршрутизация запросов по аргументам, cookie и полям
заголовка.
*) Добавление: спецсимвол для частичного совпадения теперь можно
использовать и в середине шаблонов сопоставления в маршрутах.
*) Добавление: операция POST для добавления элементов в массивы в
конфигурации.
*) Добавление: поддержка смены пользователя и группы при помощи CAP_SETUID
и CAP_SETGID в Linux без запуска главного процесса под привилегированным
пользователем.
*) Исправление: в процессе роутера могла возникать утечка памяти, если
клиент преждевременно завершал соединение.
*) Исправление: возможный сбой при применении конфигурации большого объема.
*) Исправление: операции PUT и DELETE не работали на элементах массивов в
конфигурации.
*) Исправление: схема запроса в приложениях не отражала TLS-подключения.
*) Исправление: восстановлена совместимость с приложениями Node.js,
использующими функцию ServerResponse._implicitHeader(); ошибка появилась
в версии 1.7.
*) Исправление: различные проблемы совместимости с приложениями Node.js.
В этом выпуске также стали доступны пакеты для Ubuntu 19.04 "disco".
Полный список доступных репозиториев смотрите на нашем сайте:
- https://unit.nginx.org/installation/
Тем временем, мы продолжаем трудиться над поддержкой WebSocket для модулей
Node.js и Java. Все почти готово; шансы на то, что это войдет в следующий
выпуск - очень велики.
Работа над проксированием и отдачей статических файлов также ведется, но на
это уйдет больше времени.
Напоминаю, что мы непрерывно находимся в поиске талантливых разработчиков,
желающих присоединиться к нашей команде. Вакансии в Москве и других локациях
можно посмотреть по ссылке:
- https://www.nginx.com/careers/current-openings/
--
Валентин Бартенев
Здравствуйте.
Подскажите, пожалуйста, как правильно читать лог unitd:
2019/06/15 23:08:18 [info] 890#1012 *959 shutdown(182, 2) failed (107:
Transport endpoint is not connected)
2019/06/15 23:08:25 [info] 890#1011 *1008 shutdown(182, 2) failed (107:
Transport endpoint is not connected)
2019/06/15 23:09:16 [info] 890#1004 *1009 shutdown(186, 2) failed (107:
Transport endpoint is not connected)
2019/06/15 23:09:21 [info] 890#1013 *1266 shutdown(180, 2) failed (107:
Transport endpoint is not connected)
2019/06/15 23:10:25 [info] 890#1007 *1493 shutdown(187, 2) failed (107:
Transport endpoint is not connected)
2019/06/15 23:10:40 [info] 890#1007 *1633 shutdown(176, 2) failed (107:
Transport endpoint is not connected)
2019/06/15 23:10:43 [info] 890#1007 *1647 shutdown(183, 2) failed (107:
Transport endpoint is not connected)
2019/06/15 23:10:46 [info] 890#1012 *1653 shutdown(182, 2) failed (107:
Transport endpoint is not connected)
2019/06/15 23:10:50 [info] 890#1013 *1682 shutdown(183, 2) failed (107:
Transport endpoint is not connected)
2019/06/15 23:11:14 [info] 890#1007 *1769 shutdown(179, 2) failed (107:
Transport endpoint is not connected)
2019/06/15 23:11:18 [error] 890#1007 *1782 send(180, 7F1195A6AF80, 1283623)
failed (32: Broken pipe)
Тут есть info и error. Верно ли, что info это про то, что запрос
завершился, все хорошо, просто ответ был отправлен клиенту. Про что error?
Попутно, можно ли keepalive использовать между nginx и unit?
--
Best regards,
Anton Kiryushkin
Уже в течение некоторого времени замечаю краши NgX при reload.
Сегодня дошли руки глянуть в чём дело, и обнаружил что крошится оно в перловой
либе.
Попробовал подцепиться gdb'ом и получить трейс.
Вот что вышло:
0x00007f59c0c461f7 in Perl__invlist_intersection_maybe_complement_2nd () from
/usr/lib64/libperl.so.5.30
(gdb) bt full
#0 0x00007f59c0c461f7 in Perl__invlist_intersection_maybe_complement_2nd ()
from /usr/lib64/libperl.so.5.30
No symbol table info available.
#1 0x00007f59c0c46784 in ?? () from /usr/lib64/libperl.so.5.30
No symbol table info available.
#2 0x00007f59c0c567b9 in ?? () from /usr/lib64/libperl.so.5.30
No symbol table info available.
#3 0x00007f59c0c5c6a7 in ?? () from /usr/lib64/libperl.so.5.30
No symbol table info available.
#4 0x00007f59c0c610f8 in ?? () from /usr/lib64/libperl.so.5.30
No symbol table info available.
#5 0x00007f59c0c6156d in ?? () from /usr/lib64/libperl.so.5.30
No symbol table info available.
#6 0x00007f59c0c6647b in Perl_re_op_compile () from /usr/lib64/libperl.so.
5.30
No symbol table info available.
#7 0x00007f59c0bfab3c in Perl_pmruntime () from /usr/lib64/libperl.so.5.30
No symbol table info available.
#8 0x00007f59c0c37851 in Perl_yyparse () from /usr/lib64/libperl.so.5.30
No symbol table info available.
#9 0x00007f59c0ce1912 in ?? () from /usr/lib64/libperl.so.5.30
No symbol table info available.
Если честно, не хочется пересобирать перл с дебагом (чтобы открыть символы от
#1 до #5), так что, надеюсь, этого трейса хватит. Но, если нет - скажите.
привет,
допустим, я указал ssl_trusted_certificate
[root@optional ilia]# grep ssl_trusted_certificate /etc/nginx/nginx.conf
ssl_trusted_certificate /etc/nginx/ca.pem;
[root@optional ilia]#
самого файла нет
[root@optional ilia]# ls -l /etc/nginx/ca.pem
ls: cannot access /etc/nginx/ca.pem: No such file or directory
[root@optional ilia]#
проверка синтаксиса проходит
[root@optional ilia]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@optional ilia]#
можно сделать, чтобы "nginx -t" фейлился ?
Илья Шипицин
Изменения в nginx 1.17.1 25.06.2019
*) Добавление: директива limit_req_dry_run.
*) Добавление: при использовании директивы hash в блоке upstream пустой
ключ хэширования теперь приводит к переключению на round-robin
балансировку.
Спасибо Niklas Keller.
*) Исправление: в рабочем процессе мог произойти segmentation fault,
если использовалось кэширование и директива image_filter, а ошибки с
кодом 415 перенаправлялись с помощь директивы error_page; ошибка
появилась в 1.11.10.
*) Исправление: в рабочем процессе мог произойти segmentation fault,
если использовался встроенный перл; ошибка появилась в 1.7.3.
--
Maxim Dounin
http://nginx.org/
Добрый день
Подскажите пожалуйста, как вернуть JSON в response?
Есть сам JSON
{"1_sign_level":"0200200","2_sign_level":"0200300"}
Пробовал ngx.say и cjson.encodeНо ничего не получается. Помогите,
пожалуйста, с кодом.
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,284621,284621#msg-284621