Re: Хочу написать патч

2015-08-26 Thread Илья Шипицин
pagespeed - это странный модуль. если у вас ненагруженный сайт, мало
трафика, вы спокойно проживете без него, если нагруженный, поверьте,
манипуляции с контентом на лету  - это не то, что вам захочется делать на
нагруженном сайте.

есть куча инструментов, которые оптимизируют статику, всякие бандлеры,
jpegoptim, spriteme и т.д.

25 августа 2015 г., 19:37 пользователь paperroot 
написал:

> Здравствуйте.
>
> Хочу написать патч, который будет отдавать контент предварительно
> setuid'ившись в системного пользователя указанного в конфиге
> virtual_host'a,
> для того чтобы обезопасить большое кол-во независимых проектов от разных
> пользователей, работающих на одном мощном сервере.
>
> Сделал правку в файле src/http/modules/ngx_http_static_module.c в функции
> ngx_http_static_handler.
> Суть правки: делается clone на участок кода:
>
> setgit(vh_gid);
> setuid(vh_uid);
> ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool);
>
> данная правка работает, но имеются проблемы со сторонними модулями,
> например
> pagespeed.
>
> Подскажите пожалуйста, где идеалогически правильнее делать такую правку,
> чтобы она дружила с другими модулями, или хотябы с модулем pagespeed.
>
> Спасибо.
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,261237,261237#msg-261237
>
> ___
> 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: segfault at 0 ip 000000000042d9ae sp 00007ffdc4fe6e70 error 4 in nginx[400000+d4000]

2015-08-26 Thread Андрей Василишин

Проблема воспроизводится в версии 1.8.0
# nginx -V
nginx version: nginx/1.8.0
built by gcc 4.7.2 (Debian 4.7.2-5)
built with OpenSSL 1.0.1e 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/etc/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 --pid-path=/var/run/nginx.pid 
--lock-path=/var/run/nginx.lock 
--http-client-body-temp-path=/var/cache/nginx/client_temp 
--http-proxy-temp-path=/var/cache/nginx/proxy_temp 
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp 
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp 
--http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx 
--group=nginx --with-http_ssl_module --with-http_realip_module 
--with-http_addition_module --with-http_sub_module 
--with-http_flv_module --with-http_mp4_module --with-http_gunzip_module 
--with-http_gzip_static_module --with-http_random_index_module 
--with-http_secure_link_module --with-http_stub_status_module 
--with-http_auth_request_module --with-file-aio --with-http_spdy_module 
--with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 
-Wformat -Werror=format-security' --with-ld-opt=-Wl,-z,relro --with-ipv6 
--with-debug


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

Re: Хочу написать патч

2015-08-26 Thread paperroot
Konstantin Tokarev Wrote:
---
> 25.08.2015, 17:37, "paperroot" :
> > Здравствуйте.
> >
> > Хочу написать патч, который будет отдавать контент предварительно
> > setuid'ившись в системного пользователя указанного в конфиге
> virtual_host'a,
> > для того чтобы обезопасить большое кол-во независимых проектов от
> разных
> > пользователей, работающих на одном мощном сервере.
> >
> > Сделал правку в файле src/http/modules/ngx_http_static_module.c в
> функции
> > ngx_http_static_handler.
> > Суть правки: делается clone на участок кода:
> >
> > setgit(vh_gid);
> > setuid(vh_uid);
> > ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool);
> >
> > данная правка работает, но имеются проблемы со сторонними модулями,
> например
> > pagespeed.
> >
> > Подскажите пожалуйста, где идеалогически правильнее делать такую
> правку,
> > чтобы она дружила с другими модулями, или хотябы с модулем
> pagespeed.
> 
> Мне кажется, что единственный идеологически верный путь - запускать по
> отдельной
> копии nginx для каждого виртуального хоста под соответствующим
> пользователем, и
> проксировать на них запросы с главного Nginx
> 
> >
> > Спасибо.
> >
> > Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,261237,261237#msg-261237
> >
> > ___
> > nginx-ru mailing list
> > nginx-ru@nginx.org
> > http://mailman.nginx.org/mailman/listinfo/nginx-ru
> 
> -- 
> Regards,
> Konstantin
> 
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

Да такой вариант тоже рассматривался, но он к сожалению довольно затратен по
вычислительным ресурсам и слишком сложный для управления и сопровождения.

Я лишь прошу подсказать "точку входа" для правки, т.к. чтение кода nginx и
дебагинг с gdb не дали мне ответа на этот вопрос. Гугление тоже ничего не
дало, нету описания архитектуры или схемы обработки сетевого подключения. 

Поэтому и решил задать вопрос здесь.

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

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

Re: Хочу написать патч

2015-08-26 Thread kpoxa
В вашем случае будет несколько процессов nginx под разными пользователями,
но как.. как вы будете коннекту приказывать подключиться к тому или иному
процессу, если на этапе коннекта вы не знаете к какому сайту будет запрос?

26 августа 2015 г., 12:00 пользователь paperroot 
написал:

> Konstantin Tokarev Wrote:
> ---
> > 25.08.2015, 17:37, "paperroot" :
> > > Здравствуйте.
> > >
> > > Хочу написать патч, который будет отдавать контент предварительно
> > > setuid'ившись в системного пользователя указанного в конфиге
> > virtual_host'a,
> > > для того чтобы обезопасить большое кол-во независимых проектов от
> > разных
> > > пользователей, работающих на одном мощном сервере.
> > >
> > > Сделал правку в файле src/http/modules/ngx_http_static_module.c в
> > функции
> > > ngx_http_static_handler.
> > > Суть правки: делается clone на участок кода:
> > >
> > > setgit(vh_gid);
> > > setuid(vh_uid);
> > > ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool);
> > >
> > > данная правка работает, но имеются проблемы со сторонними модулями,
> > например
> > > pagespeed.
> > >
> > > Подскажите пожалуйста, где идеалогически правильнее делать такую
> > правку,
> > > чтобы она дружила с другими модулями, или хотябы с модулем
> > pagespeed.
> >
> > Мне кажется, что единственный идеологически верный путь - запускать по
> > отдельной
> > копии nginx для каждого виртуального хоста под соответствующим
> > пользователем, и
> > проксировать на них запросы с главного Nginx
> >
> > >
> > > Спасибо.
> > >
> > > Posted at Nginx Forum:
> > http://forum.nginx.org/read.php?21,261237,261237#msg-261237
> > >
> > > ___
> > > nginx-ru mailing list
> > > nginx-ru@nginx.org
> > > http://mailman.nginx.org/mailman/listinfo/nginx-ru
> >
> > --
> > Regards,
> > Konstantin
> >
> > ___
> > nginx-ru mailing list
> > nginx-ru@nginx.org
> > http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
> Да такой вариант тоже рассматривался, но он к сожалению довольно затратен
> по
> вычислительным ресурсам и слишком сложный для управления и сопровождения.
>
> Я лишь прошу подсказать "точку входа" для правки, т.к. чтение кода nginx и
> дебагинг с gdb не дали мне ответа на этот вопрос. Гугление тоже ничего не
> дало, нету описания архитектуры или схемы обработки сетевого подключения.
>
> Поэтому и решил задать вопрос здесь.
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,261237,261255#msg-261255
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




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

request limit выставляет 503 статус, но запрос все равно выполняется

2015-08-26 Thread Dremore
Добрый день,

Имеется вот такая зона:
limit_req_zone $proxy_add_x_forwarded_for zone=rest:30m rate=50r/s;

И имеется вот такая конфигурация для server секции:
limit_req zone=rest burst=50 nodelay;

Есть нюанс, что запросы идут на лоад балансер секцию и дальше
перенаправляются на выбранный сервер (другая секция), где они уже
направляются на Томкат. Конфигурация для зоны прописана в секции для лоад
балансера.

При превышении числа запросов ожидаю 503 респонс от Nginx на входе, на самом
же деле запрос все же выполняется сначала, и лишь затем, ему выставляется
статус 503 с "правильным" телом запроса. Т.е. запрос выполняется, возвращает
то, что нужно, но его статус выставлен в 503. Подскажите, почему это
происходит, в чем может быть проблема?

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

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

Re: Хочу написать патч

2015-08-26 Thread Vasiliy Tolstov
26 авг. 2015 г. 12:01 пользователь "paperroot" 
написал:
>
> Konstantin Tokarev Wrote:
> ---
> > 25.08.2015, 17:37, "paperroot" :
> > > Здравствуйте.
> > >
> > > Хочу написать патч, который будет отдавать контент предварительно
> > > setuid'ившись в системного пользователя указанного в конфиге
> > virtual_host'a,
> > > для того чтобы обезопасить большое кол-во независимых проектов от
> > разных
> > > пользователей, работающих на одном мощном сервере.
> > >
> > > Сделал правку в файле src/http/modules/ngx_http_static_module.c в
> > функции
> > > ngx_http_static_handler.
> > > Суть правки: делается clone на участок кода:
> > >
> > > setgit(vh_gid);
> > > setuid(vh_uid);
> > > ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool);
> > >
> > > данная правка работает, но имеются проблемы со сторонними модулями,
> > например
> > > pagespeed.
> > >
> > > Подскажите пожалуйста, где идеалогически правильнее делать такую
> > правку,
> > > чтобы она дружила с другими модулями, или хотябы с модулем
> > pagespeed.
> >
> > Мне кажется, что единственный идеологически верный путь - запускать по
> > отдельной
> > копии nginx для каждого виртуального хоста под соответствующим
> > пользователем, и
> > проксировать на них запросы с главного Nginx
> >
> > >
> > > Спасибо.
> > >
> > > Posted at Nginx Forum:
> > http://forum.nginx.org/read.php?21,261237,261237#msg-261237
> > >
> > > ___
> > > nginx-ru mailing list
> > > nginx-ru@nginx.org
> > > http://mailman.nginx.org/mailman/listinfo/nginx-ru
> >
> > --
> > Regards,
> > Konstantin
> >
> > ___
> > nginx-ru mailing list
> > nginx-ru@nginx.org
> > http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
> Да такой вариант тоже рассматривался, но он к сожалению довольно затратен
по
> вычислительным ресурсам и слишком сложный для управления и сопровождения.
>

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

> Я лишь прошу подсказать "точку входа" для правки, т.к. чтение кода nginx и
> дебагинг с gdb не дали мне ответа на этот вопрос. Гугление тоже ничего не
> дало, нету описания архитектуры или схемы обработки сетевого подключения.
>
> Поэтому и решил задать вопрос здесь.
>
> Posted at Nginx Forum:
http://forum.nginx.org/read.php?21,261237,261255#msg-261255
>
> ___
> 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: Хочу написать патч

2015-08-26 Thread navern



On 26.08.2015 13:29, Vasiliy Tolstov wrote:



26 авг. 2015 г. 12:01 пользователь "paperroot" > написал:

>
> Konstantin Tokarev Wrote:
> ---
> > 25.08.2015, 17:37, "paperroot" >:

> > > Здравствуйте.
> > >
> > > Хочу написать патч, который будет отдавать контент предварительно
> > > setuid'ившись в системного пользователя указанного в конфиге
> > virtual_host'a,
> > > для того чтобы обезопасить большое кол-во независимых проектов от
> > разных
> > > пользователей, работающих на одном мощном сервере.
> > >
> > > Сделал правку в файле src/http/modules/ngx_http_static_module.c в
> > функции
> > > ngx_http_static_handler.
> > > Суть правки: делается clone на участок кода:
> > >
> > > setgit(vh_gid);
> > > setuid(vh_uid);
> > > ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool);
> > >
> > > данная правка работает, но имеются проблемы со сторонними модулями,
> > например
> > > pagespeed.
> > >
> > > Подскажите пожалуйста, где идеалогически правильнее делать такую
> > правку,
> > > чтобы она дружила с другими модулями, или хотябы с модулем
> > pagespeed.
> >
> > Мне кажется, что единственный идеологически верный путь - запускать по
> > отдельной
> > копии nginx для каждого виртуального хоста под соответствующим
> > пользователем, и
> > проксировать на них запросы с главного Nginx
> >
> > >
> > > Спасибо.
> > >
> > > Posted at Nginx Forum:
> > http://forum.nginx.org/read.php?21,261237,261237#msg-261237
> > >
> > > ___
> > > nginx-ru mailing list
> > > nginx-ru@nginx.org 
> > > http://mailman.nginx.org/mailman/listinfo/nginx-ru
> >
> > --
> > Regards,
> > Konstantin
> >
> > ___
> > nginx-ru mailing list
> > nginx-ru@nginx.org 
> > http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
> Да такой вариант тоже рассматривался, но он к сожалению довольно 
затратен по
> вычислительным ресурсам и слишком сложный для управления и 
сопровождения.

>

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


> Я лишь прошу подсказать "точку входа" для правки, т.к. чтение кода 
nginx и
> дебагинг с gdb не дали мне ответа на этот вопрос. Гугление тоже 
ничего не
> дало, нету описания архитектуры или схемы обработки сетевого 
подключения.

>
> Поэтому и решил задать вопрос здесь.
>
> Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,261237,261255#msg-261255

>
> ___
> 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, рекомендую взглянуть на книгу 
архитектура приложений с открытым исходным кодом:

http://rus-linux.net/MyLDP/BOOKS/Architecture-Open-Source-Applications/Vol-2/14-nginx-1.html

Там отдельная глава, посвященная nginx и принципам его работы.

Во-вторых при реализации подобного решения нужно учитывать принципы 
работы nginx и его модель обработки соединений(epoll). Если в апаче есть 
мод itk и там для каждого соединения делается fork, внутри которого 
можно делать смену uid и это ограничивает для всяких PHP скриптов 
возможность записи в другие директории, то в nginx висит фиксированное 
число workers, которые обрабатывают все connect'ы. Даже если сделать 
setuid перед обработкой статики, а потом выходить, то никакого 
увеличения безопасности не будет. Уже не говорю про накладные расходы.


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

Re: Хочу написать патч

2015-08-26 Thread Daniel Podolsky
> но если на одном сервере тысячи клиентов, то такое решение уже совсем не 
> подходит.
да почему же? dedup страниц памяти на основании inode исполнимого
файла/библиотеки не делся никуда же...
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Хочу написать патч

2015-08-26 Thread navern

On 26.08.2015 14:25, Daniel Podolsky wrote:

но если на одном сервере тысячи клиентов, то такое решение уже совсем не 
подходит.

да почему же? dedup страниц памяти на основании inode исполнимого
файла/библиотеки не делся никуда же...
___
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: Хочу написать патч

2015-08-26 Thread Daniel Podolsky
> Где-то такое видели уже в продакшене? Не тестировал, но уверен оверхед и
> накладные расходы(не говоря уж о количестве процессов и управлении всем
> этим) будут достаточно большие. Если где-то такое работает, то хотелось бы
> про это почитать.
такое - это какое? дедап? он приделан к ядру линуксовому уже давно.

почитать - на вскидку только вот это:
http://unix.stackexchange.com/questions/116327/loading-of-shared-libraries-and-ram-usage
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Хочу написать патч

2015-08-26 Thread navern

On 26.08.2015 15:05, Daniel Podolsky wrote:

Где-то такое видели уже в продакшене? Не тестировал, но уверен оверхед и
накладные расходы(не говоря уж о количестве процессов и управлении всем
этим) будут достаточно большие. Если где-то такое работает, то хотелось бы
про это почитать.

такое - это какое? дедап? он приделан к ядру линуксовому уже давно.

почитать - на вскидку только вот это:
http://unix.stackexchange.com/questions/116327/loading-of-shared-libraries-and-ram-usage
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Я понимаю, что такое dedup:) Такое - это более тысячи nginx бинарников, 
каждый запущенный из-под своего пользователя.


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

Re: Хочу написать патч

2015-08-26 Thread Daniel Podolsky
> Такое - это более тысячи nginx бинарников, каждый запущенный из-под своего
> пользователя.
нет, в проде я такого не видел, у меня другая специализация. но и
препятствий к этому не вижу никаких переключения контекста современный
проц уж как-нибудь отработает.

правда, следует заметить, что запустить apache+suexec окажется, скорее
всего, выгоднее
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Хочу написать патч

2015-08-26 Thread kpoxa
Кстати, а опишите задачу полностью, наверняка решается без подобного
кодоблудия.

25 августа 2015 г., 17:37 пользователь paperroot 
написал:

> Здравствуйте.
>
> Хочу написать патч, который будет отдавать контент предварительно
> setuid'ившись в системного пользователя указанного в конфиге
> virtual_host'a,
> для того чтобы обезопасить большое кол-во независимых проектов от разных
> пользователей, работающих на одном мощном сервере.
>
> Сделал правку в файле src/http/modules/ngx_http_static_module.c в функции
> ngx_http_static_handler.
> Суть правки: делается clone на участок кода:
>
> setgit(vh_gid);
> setuid(vh_uid);
> ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool);
>
> данная правка работает, но имеются проблемы со сторонними модулями,
> например
> pagespeed.
>
> Подскажите пожалуйста, где идеалогически правильнее делать такую правку,
> чтобы она дружила с другими модулями, или хотябы с модулем pagespeed.
>
> Спасибо.
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,261237,261237#msg-261237
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




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

Re: Хочу написать патч

2015-08-26 Thread navern

On 26.08.2015 15:38, Daniel Podolsky wrote:

Такое - это более тысячи nginx бинарников, каждый запущенный из-под своего
пользователя.

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

правда, следует заметить, что запустить apache+suexec окажется, скорее
всего, выгоднее
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru


Думаю есть разница между 40 воркерами для одного nginx и 4000 воркерами 
для двух тысяч клиентов на сервере(предположим в каждом кастомном 
экземпляре nginx будет по два воркера). Не выглядит это как 
производительное решение.


В апаче есть mod_itk и там такой проблемы нет. Но там fork работает, 
поэтому что-то подобное проще сделать.


Возможно есть кто-то еще, кто делал нечто подобное?

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

Re: Хочу написать патч

2015-08-26 Thread Daniel Podolsky
> Не выглядит это как производительное решение.
никто же не мешает просто взять и померять.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Хочу написать патч

2015-08-26 Thread Алексей Сундуков
>для того чтобы обезопасить большое кол-во независимых проектов от разных
> пользователей, работающих на одном мощном сервере.

nginx+php-fpm, каждый требующий изоляции проект заводится в своем pool-е (я
для fpm при этом еще и chroot делаю). На корневую папку проекта ставим
права 740, при этом nginx должен входить в группу которая имеет доступ к
файлам проекта. Т.е. все решается без костылей на уровне конфигов и
правильной расстановки прав на файлы.

25 августа 2015 г., 18:37 пользователь paperroot 
написал:

> Здравствуйте.
>
> Хочу написать патч, который будет отдавать контент предварительно
> setuid'ившись в системного пользователя указанного в конфиге
> virtual_host'a,
> для того чтобы обезопасить большое кол-во независимых проектов от разных
> пользователей, работающих на одном мощном сервере.
>
> Сделал правку в файле src/http/modules/ngx_http_static_module.c в функции
> ngx_http_static_handler.
> Суть правки: делается clone на участок кода:
>
> setgit(vh_gid);
> setuid(vh_uid);
> ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool);
>
> данная правка работает, но имеются проблемы со сторонними модулями,
> например
> pagespeed.
>
> Подскажите пожалуйста, где идеалогически правильнее делать такую правку,
> чтобы она дружила с другими модулями, или хотябы с модулем pagespeed.
>
> Спасибо.
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,261237,261237#msg-261237
>
> ___
> 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: Хочу написать патч

2015-08-26 Thread Alex Domoradov
> В апаче есть mod_itk и там такой проблемы нет. Но там fork работает,
поэтому что-то подобное проще сделать.
классная штука, только вот при использовании mod_fcgid, к сожалению, нельзя
запустить сайт от пользователя отличного от apache. И это его самый большой
минус пожалуй

2015-08-26 16:50 GMT+03:00 Алексей Сундуков :

> >для того чтобы обезопасить большое кол-во независимых проектов от разных
> > пользователей, работающих на одном мощном сервере.
>
> nginx+php-fpm, каждый требующий изоляции проект заводится в своем pool-е
> (я для fpm при этом еще и chroot делаю). На корневую папку проекта ставим
> права 740, при этом nginx должен входить в группу которая имеет доступ к
> файлам проекта. Т.е. все решается без костылей на уровне конфигов и
> правильной расстановки прав на файлы.
>
> 25 августа 2015 г., 18:37 пользователь paperroot 
> написал:
>
> Здравствуйте.
>>
>> Хочу написать патч, который будет отдавать контент предварительно
>> setuid'ившись в системного пользователя указанного в конфиге
>> virtual_host'a,
>> для того чтобы обезопасить большое кол-во независимых проектов от разных
>> пользователей, работающих на одном мощном сервере.
>>
>> Сделал правку в файле src/http/modules/ngx_http_static_module.c в функции
>> ngx_http_static_handler.
>> Суть правки: делается clone на участок кода:
>>
>> setgit(vh_gid);
>> setuid(vh_uid);
>> ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool);
>>
>> данная правка работает, но имеются проблемы со сторонними модулями,
>> например
>> pagespeed.
>>
>> Подскажите пожалуйста, где идеалогически правильнее делать такую правку,
>> чтобы она дружила с другими модулями, или хотябы с модулем pagespeed.
>>
>> Спасибо.
>>
>> Posted at Nginx Forum:
>> http://forum.nginx.org/read.php?21,261237,261237#msg-261237
>>
>> ___
>> 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

Re: Хочу написать патч

2015-08-26 Thread Anton Yuzhaninov

On 08/25/15 17:37, paperroot wrote:

Хочу написать патч, который будет отдавать контент предварительно
setuid'ившись в системного пользователя указанного в конфиге virtual_host'a,
для того чтобы обезопасить большое кол-во независимых проектов от разных
пользователей, работающих на одном мощном сервере.


Лучше посмотреть в сторону POSIX ACL (setfacl) чтобы пользователю nginx можно 
было выдать права на чтение всех пользовательских файлов, при этом чтобы сами 
пользователи не могли читать файлы друг-друга.


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

Re: Хочу написать патч

2015-08-26 Thread Alex Domoradov
Думаю, что в поддержке такая система потребует много времени. Я вот,
например, использую примерно такую конструкцию


ServerName staging.example.net
ServerAlias *.example.net
UseCanonicalName Off

VirtualDocumentRoot /vhosts/example.net/%1
DirectoryIndex index.php index.html

AssignUserFromPath "^/vhosts/example.net/([^/]+)" stg_$1 stg_$1


Options -Indexes
AllowOverride All
Order allow,deny
Allow from all



Все что нужно, это создать нового пользователя в системе.

# useradd -s /sbin/nologin -d /vhosts/example.net/project1 stg_project1

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

2015-08-26 17:02 GMT+03:00 Anton Yuzhaninov :

> On 08/25/15 17:37, paperroot wrote:
>
>> Хочу написать патч, который будет отдавать контент предварительно
>> setuid'ившись в системного пользователя указанного в конфиге
>> virtual_host'a,
>> для того чтобы обезопасить большое кол-во независимых проектов от разных
>> пользователей, работающих на одном мощном сервере.
>>
>
> Лучше посмотреть в сторону POSIX ACL (setfacl) чтобы пользователю 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

Re: Хочу написать патч

2015-08-26 Thread Oleksandr V. Typlyns'kyi
Today Aug 26, 2015 at 16:43 navern wrote:

> В апаче есть mod_itk и там такой проблемы нет. Но там fork работает, 
> поэтому что-то подобное проще сделать.

  И производительность с ним в 2-3 раза ниже, а число процессов вдвое выше.
  Ибо висят они изначально от root, а под каждый запрос делают fork.
-- 
WNGS-RIPE

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

Re: Хочу написать патч

2015-08-26 Thread Alex Domoradov
В рассылке mpm-itk выкладывали сравнения производительности, падение было
5-10%, так что 2-3 раза то вы загнули

2015-08-26 18:25 GMT+03:00 Oleksandr V. Typlyns'kyi :

> Today Aug 26, 2015 at 16:43 navern wrote:
>
> > В апаче есть mod_itk и там такой проблемы нет. Но там fork работает,
> > поэтому что-то подобное проще сделать.
>
>   И производительность с ним в 2-3 раза ниже, а число процессов вдвое выше.
>   Ибо висят они изначально от root, а под каждый запрос делают fork.
> --
> WNGS-RIPE
>
> ___
> 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: Хочу написать патч

2015-08-26 Thread Oleksandr V. Typlyns'kyi
Today Aug 26, 2015 at 18:45 Alex Domoradov wrote:

> В рассылке mpm-itk выкладывали сравнения производительности, падение было
> 5-10%, так что 2-3 раза то вы загнули

  Это на обслуживании только динамики, где львиную долю занимает 
  интерпретатор языка или сайта вцелом с кучей fork-ов на кучу картиночек?
  Я пробовал использовать его с apache 2.2 лет 7 назад и проседание 
  производительности было существенным.
-- 
WNGS-RIPE

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

Re: request limit выставляет 503 статус, но запрос все равно выполняется

2015-08-26 Thread Maxim Dounin
Hello!

On Wed, Aug 26, 2015 at 06:26:23AM -0400, Dremore wrote:

> Добрый день,
> 
> Имеется вот такая зона:
> limit_req_zone $proxy_add_x_forwarded_for zone=rest:30m rate=50r/s;
> 
> И имеется вот такая конфигурация для server секции:
> limit_req zone=rest burst=50 nodelay;
> 
> Есть нюанс, что запросы идут на лоад балансер секцию и дальше
> перенаправляются на выбранный сервер (другая секция), где они уже
> направляются на Томкат. Конфигурация для зоны прописана в секции для лоад
> балансера.
> 
> При превышении числа запросов ожидаю 503 респонс от Nginx на входе, на самом
> же деле запрос все же выполняется сначала, и лишь затем, ему выставляется
> статус 503 с "правильным" телом запроса. Т.е. запрос выполняется, возвращает
> то, что нужно, но его статус выставлен в 503. Подскажите, почему это
> происходит, в чем может быть проблема?

Вероятно, вы с помощью error_page заворачиваете 503-и ошибки опять 
же на бекенд, без изменения запроса.  Смотрите конфиг.

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

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

Re: segfault at 0 ip 000000000042d9ae sp 00007ffdc4fe6e70 error 4 in nginx[400000+d4000]

2015-08-26 Thread Maxim Dounin
Hello!

On Wed, Aug 26, 2015 at 11:35:50AM +0300, Андрей Василишин wrote:

> Проблема воспроизводится в версии 1.8.0
> # nginx -V
> nginx version: nginx/1.8.0

[...]

Чтение debug log'а наводит на мысль, что проблема во 
взаимодействии aio, проксирования с X-Accel-Redirect'ом и закрытия 
клиентом соединения в неподходящий момент.

Я ещё буду смотреть/пробовать воспроизвести, сейчас для тестов 
имеет смысл прописать в конфиге "proxy_ignore_client_abort on;" и 
посмотреть, исчезнет ли проблема.

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

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