Re: PUT & access_by_lua_file

2015-04-17 Thread itcod
PS: У меня дежавю. прецедент вспомнился подобная тема обсуждалась в
годах 1995 в fido-конференции по ifcico. Актуальность подобных холостых
передач там была очень высокая, из за ограниченного кол-ва каналов передачи,
их низких скоростей и высокой стоимости.. как результат реализовали обрыв
подобных сессий для предотвращения излишних затрат и освобождения линий.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258137#msg-258137

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Как настроить редирект www, http, https между разными доменами

2015-04-17 Thread RavilK
Михаил спасибо за ваш ответ.
Но к сожалению ничего не изменилось(
Как последний вариант убрать редирект через nginx и настроить его через
 htaccess

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258108,258139#msg-258139

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

limit conn счетчик переполнение

2015-04-17 Thread dwow
Добрый день.

Была задача ограничить кол-во запросов к бэкенду. Например, чтобы
одновременно не поступало более 1 запроса. Остальные запросы, пока работает
бэкенд, могли отваливаться по ошибке, это не страшно.
С помощью Perl я устанавливал переменную, которая показывала идет ли запрос
для проксирования на бэкенд или нет. И эту переменную использовал в качестве
ключа для
http://nginx.org/ru/docs/http/ngx_http_limit_conn_module.html#limit_conn_zone

perl_set $service_hit '
sub {
my $r = shift;
if($r->uri =~ m|^/services/post|){
return "services";
} else {
return "";
}
}
';
limit_conn_zone "$service_hit" zone=perservice:10m;

Потом перед проксированием на бэкенд (в location) использовал ограничениие
http://nginx.org/ru/docs/http/ngx_http_limit_conn_module.html#limit_conn

limit_conn perservice 1;

Все отлично работает, но только первые 30-60 минут, потом nginx для всех
запросов возвращает 503 ошибку, т.е. счетчик не сбрасывается. Если
остановить-запустить nginx, то опять какое-то время все работает корректно.
В чем может быть проблема?

Спасибо.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258140,258140#msg-258140

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Thread Vadim A. Misbakh-Soloviov
А вы, всё-таки, ответьте, пожалуйста, на вопрос, почему вы не хотите убрать 
PUT из OPTIONS? ;)
-- 
Best regards,
mva


signature.asc
Description: This is a digitally signed message part.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Как настроить редирект www, http, https между разными доменами

2015-04-17 Thread Vadim A. Misbakh-Soloviov
В письме от Пт, 17 апреля 2015 03:37:41 пользователь RavilK написал:
> Михаил спасибо за ваш ответ.
> Но к сожалению ничего не изменилось(
А Вы точно перезагружали NginX?
И, если на сервере вместо операционной систмы Debian или RH/копейка (не уверен 
на счёт RHEL/CentOS, но там тоже могли извратиться с conf.avail), то точно ли 
конфиг вируального хоста загружается NginX'ом? :)

> Как последний вариант убрать редирект через nginx и настроить его через
>  htaccess
А зачем вам тогда NginX, если вы всё делаете на Apache? ;)



// вообще, я бы спросил зачем вам вообще Apache как таковой, но это будет уже 
холиваром :)


-- 
Best regards,
mva


signature.asc
Description: This is a digitally signed message part.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Thread Илья Шипицин
если клиент говорит "Expect: 100-Continue", то в этом случае вы можете
ему сказать 405 сразу (или ответить 100-м кодом).
без этого хедера - да, ответить можно, только получив запрос полностью

17 апреля 2015 г., 11:13 пользователь Vadim A. Misbakh-Soloviov
 написал:
> В письме от Пт, 17 апреля 2015 02:07:33 пользователь itcod написал:
>> Илья добрый день!
>>
>> >>вы сами клиенту сказали, что поддерживаете PUT, он делает PUT, вы его
>>
>> фейлите.
>> прикиньте, как клиент расстраивается от такого расклада ))
>>
>> Это спорный вопрос расстраивается или просто некоректна логика обработки
>> ответов от сервера в данной точке программы клиента:) Если бы nginx сразу на
>> PUT ответил 405 (Method Not Allowed), то все некорректности по обработке
>> кода ответа можно было бы свалить на клиента, и оповестить их разработчика.
>>
>
> Дело в том, что, на сколько я понил проблему при описании с ваших слов, со
> стороны NginX всё корректно. На PUT он отвечает "нельзя" сразу по получении
> (т.е. по окончании) *запроса*.
> А отвечать "нельзя" по получении одного лишь заголовка, не дожидаясь тела —
> неправильно.
>
> --
> Best regards,
> mva
>
> ___
> 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

Re: Как настроить редирект www, http, https между разными доменами

2015-04-17 Thread Иван Мишин
>
> Михаил спасибо за ваш ответ.
> Но к сожалению ничего не изменилось(
> Как последний вариант убрать редирект через nginx и настроить его через
>  htaccess


 Я Иван, а не Михаил )

Раз уж совсем ничего не изменилось, то предполагаю что вы nginx не
релоудили )

17 апреля 2015 г., 13:43 пользователь Vadim A. Misbakh-Soloviov <
m...@mva.name> написал:

> В письме от Пт, 17 апреля 2015 03:37:41 пользователь RavilK написал:
> > Михаил спасибо за ваш ответ.
> > Но к сожалению ничего не изменилось(
> А Вы точно перезагружали NginX?
> И, если на сервере вместо операционной систмы Debian или RH/копейка (не
> уверен
> на счёт RHEL/CentOS, но там тоже могли извратиться с conf.avail), то точно
> ли
> конфиг вируального хоста загружается NginX'ом? :)
>
> > Как последний вариант убрать редирект через nginx и настроить его через
> >  htaccess
> А зачем вам тогда NginX, если вы всё делаете на Apache? ;)
>
>
>
> // вообще, я бы спросил зачем вам вообще Apache как таковой, но это будет
> уже
> холиваром :)
>
>
> --
> Best regards,
> mva
>
> ___
> 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

Re: Как настроить редирект www, http, https между разными доменами

2015-04-17 Thread RavilK
Прошу прощения Иван!
Спасибо ща помощь!

Я пробовал уже и такое:

server {
  listen 80;
   server_name www.club.site.com clubsite.com www.clubsite.com; 
   return 301 https://club.site.com$request_uri;
}

и в .htaccess 
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

и такое

RewriteCond %{HTTP_HOST} ^www.clubsite.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^clubsite.com$ [NC]
RewriteRule (.*) https://club.site.com/$1 [R=301,L]

Еще раз просмотрел все конфиг файлы и не нашел где наcтроенно
перенаправление c www.clubsite.com и www.club.site.com  на web.site.com
 Где может быть еще трабл?

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258108,258145#msg-258145

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Как настроить редирект www, http, https между разными доменами

2015-04-17 Thread Иван Мишин
Вы выложили полный конфиг nginx ? если нет то выкладывайте целиком, все
локейшены

17 апреля 2015 г., 14:56 пользователь RavilK  написал:

> Прошу прощения Иван!
> Спасибо ща помощь!
>
> Я пробовал уже и такое:
>
> server {
>   listen 80;
>server_name www.club.site.com clubsite.com www.clubsite.com;
>return 301 https://club.site.com$request_uri;
> }
>
> и в .htaccess
> RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
> RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
>
> и такое
>
> RewriteCond %{HTTP_HOST} ^www.clubsite.com$ [NC,OR]
> RewriteCond %{HTTP_HOST} ^clubsite.com$ [NC]
> RewriteRule (.*) https://club.site.com/$1 [R=301,L]
>
> Еще раз просмотрел все конфиг файлы и не нашел где наcтроенно
> перенаправление c www.clubsite.com и www.club.site.com  на web.site.com
>  Где может быть еще трабл?
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,258108,258145#msg-258145
>
> ___
> 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

Re: PUT & access_by_lua_file

2015-04-17 Thread itcod
mva добрый день
>>А вы, всё-таки, ответьте, пожалуйста, на вопрос, почему вы не хотите
убрать
PUT из OPTIONS? ;)

уберу когда научусь это делать. 
корректировку анонсов доступных методов из луа я буду делать в эти выходные.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258147#msg-258147

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Thread itcod
Илья добрый день.
>> если клиент говорит "Expect: 100-Continue", то в этом случае вы можете
ему сказать 405 сразу (или ответить 100-м кодом).
Спасибо Илья. Понял принцип.

>>без этого хедера - да, ответить можно, только получив запрос полностью
Нескромный вопрос так и оставим существовать эту PUT дырку? 
пока кого нибудь не заклюеет жареный петух

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258148#msg-258148

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Thread Vadim A. Misbakh-Soloviov
В письме от Пт, 17 апреля 2015 08:36:39 пользователь itcod написал:
> 
> Нескромный вопрос так и оставим существовать эту PUT дырку?
> пока кого нибудь не заклюеет жареный петух

Ну, у меня на сервере с отключенным PUT, например, 405+400 выбрасывается 
сразу, не получая содержимое файла.

Другое же дело, когда метод фигурирует в разрешённых у сервера на более низком 
уровне (module_http_dav) и рулится уже в access-модуле (да ещё и в ngx_lua, 
что ещё дальше) ;)

Т.е. ситуация такая:
DAV-модуль говорит серверу, что он готов получать и обрабатывать PUT.
Сервер, следовательно, считает PUT валидным запросом.
Следовательно, когда приходит PUT — он получает запрос целиком (до этого 
момента он валиден) и только потом, получив запрос, целиком отдаёт его дальше 
по цепочке в модули. Поэтому в руках ngx_lua (в access-директиве) оказывается 
запрос целиком.
Да и в обычном, емнип, access-модуле, тоже обработка происходит ПОСЛЕ 
получения запроса, а не на этапе заголовков :)

-- 
Best regards,
mva


signature.asc
Description: This is a digitally signed message part.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: limit conn счетчик переполнение

2015-04-17 Thread Maxim Dounin
Hello!

On Fri, Apr 17, 2015 at 06:06:49AM -0400, dwow wrote:

> Добрый день.
> 
> Была задача ограничить кол-во запросов к бэкенду. Например, чтобы
> одновременно не поступало более 1 запроса. Остальные запросы, пока работает
> бэкенд, могли отваливаться по ошибке, это не страшно.
> С помощью Perl я устанавливал переменную, которая показывала идет ли запрос
> для проксирования на бэкенд или нет. И эту переменную использовал в качестве
> ключа для
> http://nginx.org/ru/docs/http/ngx_http_limit_conn_module.html#limit_conn_zone
> 
> perl_set $service_hit '
> sub {
> my $r = shift;
> if($r->uri =~ m|^/services/post|){
> return "services";
> } else {
> return "";
> }
> }
> ';
> limit_conn_zone "$service_hit" zone=perservice:10m;

Just a side note: не надо делать так, вместо этого правильно 
написать отдельный location, в котором и задать ограничение.

> Потом перед проксированием на бэкенд (в location) использовал ограничениие
> http://nginx.org/ru/docs/http/ngx_http_limit_conn_module.html#limit_conn
> 
> limit_conn perservice 1;
> 
> Все отлично работает, но только первые 30-60 минут, потом nginx для всех
> запросов возвращает 503 ошибку, т.е. счетчик не сбрасывается. Если
> остановить-запустить nginx, то опять какое-то время все работает корректно.
> В чем может быть проблема?

Скорее всего проблема в том, что limit_conn органичивает не 
соединения на бекенду, а активные соединения.  Соответственно, 
если кто-то сходил на бекенд, получил оттуда достаточно большой 
ответ и неспеша забирает его у nginx'а - ограничение будет 
продолжать срабатывать.  Например, если клиент сделал запрос 
(ответ на который не помещается в буфер сокета), после чего пропал 
и на пакеты не отвечает - ограничение будет срабатывать, пока не 
случится send_timeout.

-- 
Maxim Dounin
http://nginx.org/

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Thread itcod
mva добрый день ещё раз:)

>>Ну, у меня на сервере с отключенным PUT, например, 405+400 
>>выбрасывается сразу, не получая содержимое файла.
А у вас это в динамике или статично прописана блокировка? если динамично
поделитесь идеей плиззз...

>> Другое же дело, когда метод фигурирует в разрешённых у сервера на более
низком
>> уровне (module_http_dav) 
Я пытался решить задачку на этом уровне... мня предложили порешать её в этой
точке :)))
http://forum.nginx.org/read.php?21,258024,258045#msg-258045

>> и рулится уже в access-модуле (да ещё и в ngx_lua, что ещё дальше) ;)
А куда деваться я пробовал решить её на иных уровнях... а там переменные
конфг не поддерживает и потому динамику не организовать

>>Т.е. ситуация такая:
>> DAV-модуль говорит серверу, что он готов получать и обрабатывать PUT.
>> Сервер, следовательно, считает PUT валидным запросом.

mva можно подробнее!!! 
Вы хотите сказать, что если я в хидерах укажу что PUT запрещён - то nginx
откажется принимать тело если поймает на входе PUT? И это
произойдёт вне зависимости, будет клиент послушным мальчиком, или будет
пихать пальцы во все дырки... не обращая вниание на анонсы nginx???
ВЫ В ЭТОМ УВЕРЕНЫ?

Разработчика бы услышать. по этому вопросу правда ли блокирнёт
или опять день на тесты выкидывать чтобы понять текущую логику
поведения.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258151#msg-258151

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Thread itcod
ЗЫ
>>Т.е. ситуация такая:
>> DAV-модуль говорит серверу, что он готов получать и обрабатывать PUT.
>> Сервер, следовательно, считает PUT валидным запросом.

а ваш коментарий про OPTIONS и PUT 
а если я из lua попытаюсь изменить OPTIONS то PUT для DAV-модуля будет
инвалидным.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258152#msg-258152

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: limit conn счетчик переполнение

2015-04-17 Thread dwow
Maxim Dounin Wrote:
---
 
> Just a side note: не надо делать так, вместо этого правильно 
> написать отдельный location, в котором и задать ограничение.

вот это я не понял.

у меня так
location /services/post/ {
   limit_conn perservice 1;
   proxy_pass bakcend;
}



> Скорее всего проблема в том, что limit_conn органичивает не 
> соединения на бекенду, а активные соединения.  Соответственно, 
> если кто-то сходил на бекенд, получил оттуда достаточно большой 
> ответ и неспеша забирает его у nginx'а - ограничение будет 
> продолжать срабатывать.  Например, если клиент сделал запрос 
> (ответ на который не помещается в буфер сокета), после чего пропал 
> и на пакеты не отвечает - ограничение будет срабатывать, пока не 
> случится send_timeout.

Ага, и тогда через  send_timeout (default: 60s), счетчик должен
декрементироваться и следующий запрос пойти на бекенд, так? Но этого не
происходит(

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258150,258154#msg-258154

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: limit conn счетчик переполнение

2015-04-17 Thread Maxim Dounin
Hello!

On Fri, Apr 17, 2015 at 09:15:21AM -0400, dwow wrote:

> Maxim Dounin Wrote:
> ---
>  
> > Just a side note: не надо делать так, вместо этого правильно 
> > написать отдельный location, в котором и задать ограничение.
> 
> вот это я не понял.
> 
> у меня так
> location /services/post/ {
>limit_conn perservice 1;
>proxy_pass bakcend;
> }

Тогда зачем у вас используется perl_set?

Если limit_conn в других location'ах не включён, то для 
ограничения всех соединений в конкретном location'е - достаточно 
любого константного значения.

> > Скорее всего проблема в том, что limit_conn органичивает не 
> > соединения на бекенду, а активные соединения.  Соответственно, 
> > если кто-то сходил на бекенд, получил оттуда достаточно большой 
> > ответ и неспеша забирает его у nginx'а - ограничение будет 
> > продолжать срабатывать.  Например, если клиент сделал запрос 
> > (ответ на который не помещается в буфер сокета), после чего пропал 
> > и на пакеты не отвечает - ограничение будет срабатывать, пока не 
> > случится send_timeout.
> 
> Ага, и тогда через  send_timeout (default: 60s), счетчик должен
> декрементироваться и следующий запрос пойти на бекенд, так? Но этого не
> происходит(

Если send_timeout случится - то да.  Если же вдруг какой-то клиент 
очерь медленно качает что-то большое - то процесс может занять 
бесконечное время.

Ну и да, безусловно имеет смысл заглянуть в error log, и убедится, 
что рабочие процессы не завершаются аварийно.

-- 
Maxim Dounin
http://nginx.org/

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Thread itcod
проверил Access-Control-Allow-Methods
- проблема сохранилась nginx разрешает заливать в себя сколько влезет

BitKinex - послал PROPFIND
nginx - ответил Access-Control-Allow-Methods: GET
BitKinex - игнорировал хидер и инициировал PUT
nginx - разрешил PUT и получил файл
[lua] блокировал его размещение HTTP/1.1 405 Not Allowed
:(

Resolving host name "dav.example.com" ...
Connecting ( home.itcod.com => ip: 10.1.1.1, port: 80 )
Connected (10.1.1.1:80)
<<< PROPFIND / HTTP/1.1
<<< Host: home.itcod.com
<<< User-Agent: BitKinex/3.2.3
<<< Accept: */*
<<< Pragma: no-cache
<<< Cache-Control: no-cache
<<< Depth: 1
<<< Content-Length: 220
<<< Content-Type: text/xml
<<< Authorization: Basic блаблабла==
>>> HTTP/1.1 207 Multi-Status
>>> Server: nginx/0.8.54
>>> Date: Fri, 17 Apr 2015 15:01:13 GMT
>>> Content-Type: application/octet-stream
>>> Transfer-Encoding: chunked
>>> Connection: keep-alive
>>> Access-Control-Allow-Methods: GET
<<< PUT /IMG_20150414_184225.jpg HTTP/1.1
<<< Host: home.itcod.com
<<< User-Agent: BitKinex/3.2.3
<<< Accept: */*
<<< Pragma: no-cache
<<< Cache-Control: no-cache
<<< Content-Length: 696983
<<< Content-Type: application/octet-stream
<<< Translate: f
<<< Authorization: Basic блаблабла==
>>> HTTP/1.1 405 Not Allowed
>>> Server: nginx/0.8.54
>>> Date: Fri, 17 Apr 2015 15:01:19 GMT
>>> Content-Type: text/html
>>> Connection: keep-alive
>>> Content-Length: 173
Connection closed

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258158#msg-258158

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: limit conn счетчик переполнение

2015-04-17 Thread dwow
Maxim Dounin Wrote:
---
> Если limit_conn в других location'ах не включён, то для 
> ограничения всех соединений в конкретном location'е - достаточно 
> любого константного значения.

Если не используется в др. локейшенах, то можно сделать вот так:
limit_conn_zone "service" zone=perservice:10m;
location /services/post/ {
   limit_conn perservice 1;
   proxy_pass bakcend;
}

и будет работать?


> Если send_timeout случится - то да.  Если же вдруг какой-то клиент 
> очерь медленно качает что-то большое - то процесс может занять 
> бесконечное время.
и как от таких избавляться? 

 
> Ну и да, безусловно имеет смысл заглянуть в error log, и убедится, 
> что рабочие процессы не завершаются аварийно.
ошибок нет.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258150,258159#msg-258159

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: limit conn счетчик переполнение

2015-04-17 Thread Maxim Dounin
Hello!

On Fri, Apr 17, 2015 at 12:28:03PM -0400, dwow wrote:

> Maxim Dounin Wrote:
> ---
> > Если limit_conn в других location'ах не включён, то для 
> > ограничения всех соединений в конкретном location'е - достаточно 
> > любого константного значения.
> 
> Если не используется в др. локейшенах, то можно сделать вот так:
> limit_conn_zone "service" zone=perservice:10m;
> location /services/post/ {
>limit_conn perservice 1;
>proxy_pass bakcend;
> }
> 
> и будет работать?

Да.  В старых версиях (до nginx 1.7.6), возможно, потребуется 
какая-нибудь константная переменная (например, $nginx_version), а 
не просто строка.

> > Если send_timeout случится - то да.  Если же вдруг какой-то клиент 
> > очерь медленно качает что-то большое - то процесс может занять 
> > бесконечное время.
> и как от таких избавляться? 

В общем случае - никак, это обычные клиенты, которые просто 
получают ответ.  Собственно, как раз одно из преимуществ nginx'а 
состоит в том, что он умеет таких клиентов эффективно 
обслуживать, тратя на это минимум ресурсов.  Ну и ограничивать с 
помощью директивы limit_conn, не давая захватить слишком много 
ресурсов сервера.

В вашем случае - проблема в том, что вы пытаетесь limit_conn 
применить не по назначению, и такое использование приводит к тому, 
что один медленный пользователь может легко заблокировать доступ 
всем остальным.

-- 
Maxim Dounin
http://nginx.org/

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: limit conn счетчик переполнение

2015-04-17 Thread Gena Makhomed

On 17.04.2015 19:28, dwow wrote:

>>> Была задача ограничить кол-во запросов к бэкенду.
>>> Например, чтобы одновременно не поступало более 1 запроса.


Если же вдруг какой-то клиент очерь медленно качает
что-то большое - то процесс может занять бесконечное время.



и как от таких избавляться?


1) купить платную версию NGINX Plus, там есть max_conns=number
http://nginx.org/en/docs/http/ngx_http_upstream_module.html

2) поставить между клиентом [или nginx] и бэкендом
haproxy - haproxy умеет это делать прямо из коробки:
https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#5.2-maxconn

--
Best regards,
 Gena

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Thread itcod
Упростил схему. 
1. из dav_methods изъял PUT
2. отключил луа авторизатор
тестил BitKinex'ом

Результат: метод PUT не блокирует nginx, хотя он запрещён в модуле DAV.
то есть всё как было. сначало принимаем большой файл, а потом говорим, что
нам этого нельзя.

server {
listen 80;
server_name dav.example.com;
server_name_in_redirect off;
access_log /var/log/nginx/dav-access.log main;
location / {
access_by_lua_file /etc/nginx/lua/auth-dav1.lua;
dav_methods DELETE 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 /opt/home/;
}
location ~/\.ht {
deny all;
}
}

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258162#msg-258162

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Thread itcod
добавил в location конструкцию
if ($request_method = PUT) {
return 403;
}

по прежнему PUT прокачивает холостые гигобайты трафика! :(

Буду рад мыслям сообщества!
какими ещё существующими средствами nginx, можно всё таки прекратить такое
"сверхлояльное" поведение nginx с настырными PUT'анами:)))

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258163#msg-258163

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Thread Илья Шипицин
хотите совет? поставьте CEPH
в качестве упражнения, ваши манипуляции с DAV выглядят вполне симпатично.

для продакшена распределенный кластер CEPH/S3 (по сути тот же
http-доступ) более крут.
клиентов S3 не меньше, чем DAV

документации полно, она хорошего качества,
http://habrahabr.ru/company/performix/blog/218065/

17 апреля 2015 г., 17:36 пользователь itcod  написал:
> Илья добрый день.
>>> если клиент говорит "Expect: 100-Continue", то в этом случае вы можете
> ему сказать 405 сразу (или ответить 100-м кодом).
> Спасибо Илья. Понял принцип.
>
>>>без этого хедера - да, ответить можно, только получив запрос полностью
> Нескромный вопрос так и оставим существовать эту PUT дырку?
> пока кого нибудь не заклюеет жареный петух
>
> Posted at Nginx Forum: 
> http://forum.nginx.org/read.php?21,258069,258148#msg-258148
>
> ___
> 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

Re: PUT & access_by_lua_file

2015-04-17 Thread Oleksandr V. Typlyns'kyi
Yesterday Apr 17, 2015 at 11:12 itcod wrote:

> Resolving host name "dav.example.com" ...
> Connecting ( home.itcod.com => ip: 10.1.1.1, port: 80 )
> Connected (10.1.1.1:80)
> <<< PROPFIND / HTTP/1.1
> <<< Host: home.itcod.com

> >>> HTTP/1.1 207 Multi-Status
> >>> Server: nginx/0.8.54

  Заметил древнюю версию и сделал аналогичный запрос, а в теле ответа другая:
  401 Authorization Required
  nginx/1.7.11
  У Вас один nginx за другим nginx?
  Если да, то первый полностью принимает запрос и лишь после этого отправляет
  его второму, а тот возвращает 405.
-- 
WNGS-RIPE

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Thread itcod
Добрый день Александр!
Да там получается пара друг за дугом. Фронт старичёк
Ура!!! Вы совершенно правы!!! Обратился BitKinex к внутреннему
Он обрывает PUT сразу!!!

<<< PUT /IMG_20150414_184225.jpg HTTP/1.1
<<< Host: home.virtual.ko:7070
<<< User-Agent: BitKinex/3.2.3
<<< Accept: */*
<<< Pragma: no-cache
<<< Cache-Control: no-cache
<<< Content-Length: 696983
<<< Content-Type: application/octet-stream
<<< Translate: f
<<< Authorization: Basic блаблабла==
>>> HTTP/1.1 405 Not Allowed
>>> Server: nginx/1.7.11
>>> Date: Sat, 18 Apr 2015 05:25:34 GMT
>>> Content-Type: text/html
>>> Content-Length: 173
>>> Connection: keep-alive
Connection closed

Спасибо огромное
Надо покурить эту инфу...

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258178#msg-258178

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: PUT & access_by_lua_file

2015-04-17 Thread itcod
>> поставьте CEPH
Илья спасибо:) хороший совет:)
Наверное интересный софт. я его обязательно погрызу на досуге 
На всё время нужно... Для WEBDAV, я знаю на следующие этапы JS и Perl
либы 
а S3, это всё с нуля. В умке по S3 шаром покати... ток амазон и
всплывает:)

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,258069,258179#msg-258179

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru