Re: webdav+ext base.auth+var=error

2015-04-13 Пенетрантность Maxim Dounin
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

2015-04-13 Пенетрантность itcod
Планы на будущее.
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

2015-04-13 Пенетрантность itcod
Максим добрый день. Вы были абсолютно правы. В процессе написания
аутентификатора на 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

2015-04-13 Пенетрантность Bogdan
Привет.

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

2015-04-13 Пенетрантность Maxim Dounin
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

2015-04-13 Пенетрантность Maxim Dounin
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

2015-04-13 Пенетрантность itcod
Вот результат. Пользуйтесь на здоровье. 
Ногами не пинать. эт моя первая программка на 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

2015-04-13 Пенетрантность itcod
РЕШЕНО
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