Re: webdav+ext base.auth+var=error
Hello! On Mon, Apr 13, 2015 at 01:32:44PM -0400, itcod wrote: Максим добрый день. Вы были абсолютно правы. В процессе написания аутентификатора на lua выяснил, что если переменные (например $file_password) создается в location / то при работе из WEBDAV клиентов они не обрабатываются и остаются пустыми. Видимо это жучёк в nginx. Вот так не работает: server { ... location / { set $file_password $dir/$1; ... }} А если их глобально вынести выше описания location в секцию server то они заполняются (не пусты). Вот так работает: server { ... set $file_password $dir/$1; location / { ... }} При этом в location / ипользуется limit_except, правильно? Выглядит как багофича limit_except в сочетании с rewrite'ами, директивы rewrite не выполняются для лимитированных запросов. Наверное, это имеет смысл поправить. И кстати при работе с WEBDAV, аутентификация через дополнительный реквест /auth у меня ни разу не сработала... много проверил вариаций гдето в инете вычитал, что это ошибка в nginx и патч видел для nginx но мне такой вариант не понравился. Повторюсь: если показать конфигурацию - больше шансов, что помогут найти проблему. Единственная известная мне проблема, проявлявшаяся при взаимодействии dav'а и auth_request'а - исправлена больше двух лет назад, в nginx 1.3.9. -- Maxim Dounin http://nginx.org/ ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: webdav+ext base.auth+var=error
Планы на будущее. 1. Добавить блокирование доступа пользователей WEBDAV к файлам паролей в папках 2. Обеспечить доступ к файлам паролей админам папок 3. Внедрить расширеное управление доступными коммандами WEBDAV dav_methods PUT DELETE MKCOL COPY MOVE; dav_ext_methods PROPFIND OPTIONS; посредством расширения формата .htpasswd test:password до формата test:password:accessKeys Posted at Nginx Forum: http://forum.nginx.org/read.php?21,257511,258003#msg-258003 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: webdav+ext base.auth+var=error
Максим добрый день. Вы были абсолютно правы. В процессе написания аутентификатора на lua выяснил, что если переменные (например $file_password) создается в location / то при работе из WEBDAV клиентов они не обрабатываются и остаются пустыми. Видимо это жучёк в nginx. Вот так не работает: server { ... location / { set $file_password $dir/$1; ... }} А если их глобально вынести выше описания location в секцию server то они заполняются (не пусты). Вот так работает: server { ... set $file_password $dir/$1; location / { ... }} И кстати при работе с WEBDAV, аутентификация через дополнительный реквест /auth у меня ни разу не сработала... много проверил вариаций гдето в инете вычитал, что это ошибка в nginx и патч видел для nginx но мне такой вариант не понравился. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,257519,258004#msg-258004 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: общий кэш для нескольких nginx
Привет. 1. Общий кэш на файловой системе - единая точка отказа. В лучшем случае потеряете сам кэш - в худшем - все балансировщики. 2. Эффективность существующего кэша надо оценивать, если там 90% - я не силён в математике, но буст будет не так велик ИМХО. 3. Если хочется новых острых впечатлений в продакшене - можно кэшировать в общем мемкэше. Но есть шанс потерять кэш вообще, либо получить холодный кэш. 4. Можно отдавать ответы не с бэкендов, а через кластер couchbase - http://labs.couchbase.com/couchbase-nginx-module/, но придётся доработать приложение так, чтобы оно сам писало кэш в кучбейс и самостоятельно же чистило его. 2015-03-23 17:58 GMT+03:00 Илья Шипицин chipits...@gmail.com: расчеты можно сделать исходя, например, из access-логов. залогируйте $upstream_response_time, посмотрите, какие запросы могли бы обработаться из кеша, если бы он был общий, просуммируйте. можно взять граничное условие, что, если запрос берется из кеша, то временнЫе затраты на это равны нулю, т.е. в первом приближении пренебречь дисковым вводом-выводом. это может быть справедливо, если у вас действительно тяжелая генерация ответов. 23 марта 2015 г., 18:24 пользователь Михаил Пульман pull...@gmail.com написал: Расчетов нет, есть предположение. Вы подскажите как реализовать, а последующие тесты покажут результативность такого решения. Чисто из логических соображений прирост должен быть обязательно. С уважением, Михаил 23 марта 2015 г., 16:10 пользователь Илья Шипицин chipits...@gmail.com написал: а есть расчеты, подтверждающие хороший прирост производительности ? 23 марта 2015 г., 17:30 пользователь Михаил Пульман pull...@gmail.com написал: Ситуация в том что есть железный балансировщик, он раскидывает трафик по 4-6 штукам nginx, а нжинксы балансируя траффик с помощью апстрима перенаправляют на бэкенд сервера. На балансировщиках nginx настроен кэш. Получается что на всех балансировщиках разный кеш. Допусти клиентский запрос попавший на балансир номер 1 кеша там не обнаружилось и запрос пошел на бэкенд, в то время как на балансировщике номер 2 нужный кеш в этот момент был, но по понятным причинам не был использоан. Вообщем если сделать общий кеш для всех балансировщиков nginx можно получить хороший прирост производительности. С уважением, Михаил 23 марта 2015 г., 12:56 пользователь Илья Шипицин chipits...@gmail.com написал: возможно, вы придете к монстроидной схеме nginx -- squid (с поддержкой ICAP) -- бекенды и даже после танцев с бубном вы ее настроите. но, практика показывает, что в таких случаях надо уметь отвечать на вопрос зачем это надо ?. после ответа на который часто оказывается, что на самом деле - не надо. вы бы рассказали про вашу ситуацию в деталях ? 23 марта 2015 г., 13:54 пользователь Михаил Пульман pull...@gmail.com написал: Добрый день коллеги! На фронте имеется n-ое количество nginx которые выступают в качестве балансировщиков. Нужно наладить единый кэш для всех фронтенд nginxов. Какие есть возможности в nginx для реализации этой задачи? С уважением, Михаил ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru -- WBR, Bogdan B. Rudas ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginx-1.7.12
Hello! On Fri, Apr 10, 2015 at 12:33:49PM -0400, softshape wrote: У нас да, X-Accel использует адрес типа @upload/ и в конфиге определен location - location ^~ @upload { internal; alias /home/www/upload; } А как правильно делать теперь? @ на / заменить? Да, использовать обычные URI. И заодно можно приседания с alias выкинуть, обычного root /home/www; хватит. -- Maxim Dounin http://nginx.org/ ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Проблема с add header + try files
Hello! On Sun, Apr 12, 2015 at 02:16:24PM -0400, alexpts wrote: Привет! Имею такой конфиг location ~ \.html { gzip_static on; root xxx; try_files $uri /index.php$is_args$args; } Локейшен проверяет есть ли в ФС статический документ и отдает его клиенту из кеша, Если документа нет, то отдает управление переходит в локейшен, который обрабатывает php скрипты для генерации документа. Потребовалось, сетить клиенту куку с ip клиента. Изменил конфиг: location ~ \.html { gzip_static on; root xxx; if ($cookie___lastip != $remote_addr) { add_header Set-Cookie __lastip=$remote_addr;Domain=$host;Path=/;Max-Age=31536000; } try_files $uri /index.php$is_args$args; } Если документ в кеше, то условие работает верно и если сменился ip или не было такой куки, то приходит кука в ответе от сервера. А вот если документа нет в кеше и нет куки с таким именем или значение куки не равно ip адресу, то запрос возвращает 404. Try_files не находит документ, но в другой локейшен не заходит. Не знаю баг это или нет. Подскажите как можно решить данную задачу. На всякий случай оставлю эту ссылку здесь: http://wiki.nginx.org/IfIsEvil -- Maxim Dounin http://nginx.org/ ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: webdav+ext base.auth+var=error
Вот результат. Пользуйтесь на здоровье. Ногами не пинать. эт моя первая программка на lui https://ihome.itcod.com/max/projects/auth-dav/ Замечания предложения итд пишите мылом ссылку на обсуждение:) # auth-dav Nginx Base Authenticate url/.htpasswd for WebDAV and HTTP secure directory(links). Support CRYPT(3) MD5 SHA-1 secure hash. Test computation in Lua (5.1) -- Copyright (c) 2015 by Yura Vdovytchenko (m...@itcod.com) https://ihome.itcod.com/max/projects/auth-dav/;, Nginx Base Authenticate url/.htpasswd for WebDAV and HTTP secure directory(links) Support CRYPT(3) MD5 SHA-1 secure hash. Test computation in Lua (5.1) Author by Yura Vdovytchenko License MIT ОПИСАНИЕ Модуль аутентификации для nginx. Nginx с поддержкой lua 5.1. Основная задача модуля обеспечить независимую парольную защиту для каждой папки на сайте (WEBDAV-хранилище/облака). Реализовано методом автоматической Base-авторизации при обнаружении в папке/url файла авторизации (например: .htpasswd). Поддерживает три базовых метода кодирования CRYPT(3) MD5 SHA1 ЗАМЕЧАНИЯ На текущий момент WEBDAV-клиенты (BitKenix/FAR-NetDrive) обеспечивают только авторизацию при первичном входе, и не умеют выдавать запрос авторизации при переходе в подпапку с иным авторизуемым пользователем. Браузеры умеют. REQUIRE require base64 -- base64.lua https://github.com/toastdriven/lua-base64 local utf8 = require utf8 -- utf8.lua Kyle Smith https://gist.github.com/markandgo/5776124 local csv = require(csv) -- lua-csv https://github.com/geoffleyland/lua-csv local resty_sha1 = require resty.sha1 -- https://github.com/openresty/lua-resty-core local apr = require apr.core -- lua-apr -- Loading the library. crypt -- https://github.com/PlugwiseBV/luacrypt descrypt = assert(package.loadlib(/usr/local/lib/lua/5.1/crypt.so, luaopen_crypt)) STARTUP --path lua file: /etc/nginx/lua/auth-dav.lua --Example Nginx virtual example.conf server { ... set $dir /opt/home; set $dir_path $dir; set $home $dir_path; set $sadm_passwd .htpsw; set $user_passwd .uhtpasswd; location / { 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/; access_by_lua_file /etc/nginx/lua/auth-dav.lua; client_max_body_size 0; autoindex on; root /opt/home/; limit_except GET { allow all; #deny all; } } location ~/\.ht { deny all; } } Posted at Nginx Forum: http://forum.nginx.org/read.php?21,257511,258000#msg-258000 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: webdav+ext base.auth+var=error
РЕШЕНО http://forum.nginx.org/read.php?21,257511,258000#msg-258000 Posted at Nginx Forum: http://forum.nginx.org/read.php?21,257495,258001#msg-258001 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru