Re: client_body_temp_path - permissions

2017-06-02 Пенетрантность Konstantin Baryshnikov
В таком виде, конечно, не закоммитят. Я тут нагло воспользовался существованием 
внутреннего флага, который по факту используется для webdav-модуля, и "вытащил" 
его в конфигурацию, потому патч и такой простой. Если уж делать по-человечески 
- то делать нормальную конфигурацию по аналогии с proxy_store_access. Но это 
немного сложнее, и такой патч, вероятно, уже не будет так легко накладываться 
на практически любую версию.

> On Jun 2, 2017, at 1:04 PM, S.A.N <nginx-fo...@forum.nginx.org> wrote:
> 
> Konstantin Baryshnikov Wrote:
> ---
>>> 
>>> On May 31, 2017, at 12:35 AM, S.A.N <nginx-fo...@forum.nginx.org>
>> wrote:
>>> 
>>> Я конечно извиняюсь, за настойчивость, но неужели пермишен 0600, на
>> файл
>>> который должен быть обработан в другом процессе, это нормально и это
>> никак
>>> нельзя настроить в конфиге Nginx?
>> 
>> Нельзя.
>> 
>> Я по большой нужде обходился вот таким патчем:
>> 
> 
> Спасибо, но проблема ручных патчей в будущей поддержке, нужно не забывать
> всегда патчить новые версии Nginx, и потом тестировать...
> Будет очень хорошо если его закомитят и будет работать из коробки.
> 
> Posted at Nginx Forum: 
> https://forum.nginx.org/read.php?21,274059,274602#msg-274602
> 
> ___
> 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: client_body_temp_path - permissions

2017-06-01 Пенетрантность Konstantin Baryshnikov
> 
> On May 31, 2017, at 12:35 AM, S.A.N  wrote:
> 
> Я конечно извиняюсь, за настойчивость, но неужели пермишен 0600, на файл
> который должен быть обработан в другом процессе, это нормально и это никак
> нельзя настроить в конфиге Nginx?

Нельзя.

Я по большой нужде обходился вот таким патчем:

diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -386,6 +386,13 @@
   offsetof(ngx_http_core_loc_conf_t, client_body_in_single_buffer),
   NULL },

+{ ngx_string("client_body_file_group_access"),
+  NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
+  ngx_conf_set_flag_slot,
+  NGX_HTTP_LOC_CONF_OFFSET,
+  offsetof(ngx_http_core_loc_conf_t, client_body_file_group_access),
+  NULL },
+
 { ngx_string("sendfile"),
   NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
 |NGX_CONF_FLAG,
@@ -1462,6 +1469,7 @@
 }

 r->request_body_in_single_buf = clcf->client_body_in_single_buffer;
+r->request_body_file_group_access = clcf->client_body_file_group_access;

 if (r->keepalive) {
 if (clcf->keepalive_timeout == 0) {
@@ -3571,6 +3579,7 @@
 clcf->max_ranges = NGX_CONF_UNSET_UINT;
 clcf->client_body_in_file_only = NGX_CONF_UNSET_UINT;
 clcf->client_body_in_single_buffer = NGX_CONF_UNSET;
+clcf->client_body_file_group_access = NGX_CONF_UNSET;
 clcf->internal = NGX_CONF_UNSET;
 clcf->sendfile = NGX_CONF_UNSET;
 clcf->sendfile_max_chunk = NGX_CONF_UNSET_SIZE;
@@ -3792,6 +3801,8 @@
   NGX_HTTP_REQUEST_BODY_FILE_OFF);
 ngx_conf_merge_value(conf->client_body_in_single_buffer,
   prev->client_body_in_single_buffer, 0);
+ngx_conf_merge_value(conf->client_body_file_group_access,
+  prev->client_body_file_group_access, 0);
 ngx_conf_merge_value(conf->internal, prev->internal, 0);
 ngx_conf_merge_value(conf->sendfile, prev->sendfile, 0);
 ngx_conf_merge_size_value(conf->sendfile_max_chunk,
diff --git a/src/http/ngx_http_core_module.h b/src/http/ngx_http_core_module.h
--- a/src/http/ngx_http_core_module.h
+++ b/src/http/ngx_http_core_module.h
@@ -402,6 +402,7 @@
 ngx_uint_tserver_tokens;   /* server_tokens */
 ngx_flag_tchunked_transfer_encoding; /* chunked_transfer_encoding */
 ngx_flag_tetag;/* etag */
+ngx_flag_tclient_body_file_group_access; /* 
client_body_file_group_access */

 #if (NGX_HTTP_GZIP)
 ngx_flag_tgzip_vary;   /* gzip_vary */

> 
> Posted at Nginx Forum: 
> https://forum.nginx.org/read.php?21,274059,274538#msg-274538

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

Re: HACK NGINX+DAV

2016-12-03 Пенетрантность Konstantin Baryshnikov

> On Dec 3, 2016, at 1:03 PM, itcod  wrote:
> 
> Буду благодарен если сообщество подскажет где для этих тестов взять
> бесплатную временную виртуалку с федорой. Без заморочек с инсталяциями оси и
> излишней настройкой, а то как обычно времени на админскую рутину нет
> совсем:)

http://promocodeclub.com/digitalocean-promo-code/

> Знать бы только какие по мнению авторов nginx
> - "ЛИШНИЕ" при подобном тесте:)

Очевидно, сторонние модули по мнению авторов nginx - это те модули, которые 
разработаны не ими. В вашей конфигурации это вот:

--add-module=/usr/src/1/nginx-dav-ext-module-master
--add-module=/usr/src/1/f4f-hds-master
--add-module=/usr/src/1/echo-nginx-module-master
--add-module=/usr/src/1/nginx_md5_filter-master
--add-module=/usr/src/1/ngx_devel_kit-master
--add-module=/usr/src/1/lua-nginx-module-master
--add-module=/usr/src/1/set-misc-nginx-module-master

Модуль Dav-Ext - сторонний. Если ваш баг воспроизводится только с ним, но не со 
штатным dav-модулем - обращайтесь к разработчику модуля Dav-Ext.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: MD5 и memcached get value

2016-07-13 Пенетрантность Konstantin Baryshnikov
> Второй вопрос более актуален. Перелопатив всю возможную документацию не смог
> найти как в nginx получить значение переменной из memcached?
> 
> Нужно что-то вроде:
> 
> if (memcachedget('denyip'.$remote_addr)==1) {return 444;}
> 
> Пока как вариант получается нужно определив скриптом клиента для блокировки
> запихать его в файл, и через geo вытаскивать nginx-ом, к тому же, если я
> правильно понимаю, не забыв еще и nginx reload сделать, что как бы в миллион
> раз затратнее.

У вас этот список обновляется каждые несколько секунд?
Если пару раз в полчаса или реже - как раз все наоборот, в "миллион" раз 
затратнее будет вариант с постоянным обращением к мемкешу.

> 
> Posted at Nginx Forum: 
> https://forum.nginx.org/read.php?21,268252,268252#msg-268252
> 
> ___
> 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: модуль на заказ

2016-02-25 Пенетрантность Konstantin Baryshnikov

> В принципе практически все делается с использованием основной логики nginx, 
> хидерс и ssi модулей, но проблемма
> именно с генерением php uniqid. Можно, конечно попытаться перейти на тот-же 
> userid модуль, но тогда придется
> много что менять в бакэнде, который дальше будет это обрабатывать, чего бы 
> сильно не хотелось.

К уже озвученному совету с X-Accel-Redirect добавлю, что для его отдачи можно 
использовать сам php в неблокирующем режиме - например, с помощью 
http://reactphp.org/, будет буквально 10 строк кода, и вполне вменяемо по 
потреблению ресурсов.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: модуль на заказ

2016-02-24 Пенетрантность Konstantin Baryshnikov

> On Feb 23, 2016, at 11:33 AM, Alexander Uskov  wrote:
> 
> Добрый день,
> 
> Скажите, пожалуйста, где можно заказать написание модуля? Выполнялет ли такие 
> заказы Nginx Inc.?

Александр, опишите вашу задачу. По опыту, когда заходит речь о разработке 
модуля, после полной и корректной формулировки задачи в подавляющем большинстве 
случаев оказывается, что собственный модуль писать вовсе не обязательно, и 
вполне достаточно стандартных модулей и/или небольшого скриптинга на том же lua.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Как вернуть размер проксируемого ответа?

2015-05-25 Пенетрантность Konstantin Baryshnikov

 Есть стороний api на который нельзя повлиять. Ответы этого api пришлось
 пропустить через свой nginx так как в ответах нет заголовка
 Access-Control-Allow-Origin.
 Есть запрос в ответ на который приходит json: массив хешей. И есть ситуация,
 когда нужно не тело ответа, а знание пуст ответ или нет, а так как ответ сам
 по себе может быть велик то хочется схитрить.

Если даже по запросе по HTTP/1.0 не отдается Content-Length, значит, так уж 
устроен этот стороний API, на который нельзя повлиять.

Но, может быть, он поддерживает HTTP Range Requests? 
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Балансировка между HTTP и FastCGI бэкендами

2015-05-01 Пенетрантность Konstantin Baryshnikov
On Apr 30, 2015, at 4:49 PM, Maxim Dounin mdou...@mdounin.ru wrote:
 On Thu, Apr 30, 2015 at 06:06:05AM +0300, Konstantin Baryshnikov wrote:
 On Apr 29, 2015, at 3:21 PM, Maxim Dounin mdou...@mdounin.ru wrote:
 
   location / {
   if ($new) {
   proxy_pass http://new.example.com;
   }
 
   fastcgi_pass old.example.com;
   }
   }
 
 Ого, а это теперь работает?
 
 Всегда считал это гарантированным способом отстрелить себе ногу. Что-то 
 изменилось?
 
 Вот конкретно приведённая конструкция - работает, и без каких-либо 
 проблем.  И, собственно, всегда работала.  Но если конфиг будет 
 чуть сложнее - то нога в опасности, да.  Подробнее про опасности 
 расписано вот тут:
 
 http://wiki.nginx.org/IfIsEvil

Ага, все как было, ясненько, спасибо.  Вообще у нас введено правило “if 
используем только с директивами rewrite-модуля”, так оно и надежнее, и 
сумасшедшие запутанные конфигурации нагородить не позволяет.

P. S. Лет 5 назад у меня была идея для решения проблемы IfIsEvil попробовать 
перенести if-ы на уровень location-ов (включая вложенные), вида

location /foo/ when ($new) {
...
}

но почитал исходники и понял, что это не очень просто :-)
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Балансировка между HTTP и FastCGI бэкендами

2015-04-29 Пенетрантность Konstantin Baryshnikov
On Apr 29, 2015, at 3:21 PM, Maxim Dounin mdou...@mdounin.ru wrote:

location / {
if ($new) {
proxy_pass http://new.example.com;
}
 
fastcgi_pass old.example.com;
}
}

Ого, а это теперь работает?

Всегда считал это гарантированным способом отстрелить себе ногу. Что-то 
изменилось?
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Как вызвать phantomjs прямо из nginx?

2015-03-24 Пенетрантность Konstantin Baryshnikov
On Mar 10, 2015, at 7:30 AM, softshape nginx-fo...@nginx.us wrote:

 Всем привет,
 
 нужен совет, возможно ли и как настроить nginx, чтобы решить такую задачу -
 
 на каждый запрос вида http://pdf.domain.ru/path/?pdf=12345.pdf вызывать
 phantomjs c параметрами -
 
 phantomjs /opt/www/modules/pdf/rasterize.js 'http://www.domain.ru/path/'
 /opt/www/files/12345.pdf A4

Не надо на каждый запрос запускать phantomjs. Это очень низкопроизводительный 
способ, да и nginx не умеет CGI.

Надо, используя модуль webserver, входящий в поставку в phantomjs, реализовать, 
собственно, веб-сервер, который в event loop-е принимает запрос, выполняет 
необходимую процедуру и отдает ответ, после чего настроить проксирование из 
nginx.

Как это делать, написано в документации на сайте phantomjs. Там же есть примеры.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Большая дисперсия времени выполнения запросов

2014-08-20 Пенетрантность Konstantin Baryshnikov
On Aug 19, 2014, at 7:20 PM, yury_y nginx-fo...@nginx.us wrote:

 6) если используются сторонние модули - причина может быть в них.
 
 6 - из сторонних модулей только nginx-sla

Вот в его локах и причина наверняка.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru