Re: Хочу написать патч
On Tuesday, 25.08.2015 10:37:20 paperroot wrote: > Здравствуйте. > > Хочу написать патч, который будет отдавать контент предварительно > setuid'ившись в системного пользователя указанного в конфиге virtual_host'a, > для того чтобы обезопасить большое кол-во независимых проектов от разных > пользователей, работающих на одном мощном сервере. > ngx_http_static_module Если, например, файлы лежат по путям вида /srv/web/project42/static, и права на /srv/web/project42 — 0700 (и нельзя просто сделать chgrp www-data), то можно bind-маунтами вынести все static в отдельное место, куда юзер www-data уже будет иметь доступ. Или еще можно задействовать bindfs. -- HTH Roman. 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: Re: Re: Хочу написать патч
>>Не в какую-то ОДНУ общую группу, а в Х групп, где Х-количество системных аккаунтов из под которых работают vhost-ы. /var/www/vhost1 - 740 - vhost1:www /var/www/vhost2 - 740 - vhost2:www /var/www/vhost3 - 740 - vhost3:www или так /var/www/vhost1 - 740 - vhost1:vhost1 /var/www/vhost2 - 740 - vhost2:vhost2 /var/www/vhost3 - 740 - vhost3:vhost3 и добавить пользователю нджинкса все юзер группы хостов. username: nginxuser group: (nginxuser,vhost1,vhost2,vhost3) пс: для первого варианта лучше ещё добавить для каждого vhost open_base_dir ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Re: Хочу написать патч
> достаточно пихнуть нджинкс в общую группу с хостами и расставить права. Я бы внес уточнения в формулировку. Не в какую-то ОДНУ общую группу, а в Х групп, где Х-количество системных аккаунтов из под которых работают vhost-ы. Тогда достаточно на корневую директорию vhost поставить 0740 и быть уверенным, что файлы внутри может читать только владелец и nginx при этом дальше по дереву директорий (при дефолном umask в 022) владелец без проблем меняет файлы, а nginx по прежнему имеет к ним доступ (касается ситуации, когда файлы закачали, к примеру, по ftp). ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Re: Хочу написать патч
>>Т.е. все решается без костылей на уровне конфигов и правильной расстановки прав на файлы. так и есть > для того чтобы обезопасить большое кол-во независимых проектов от разных > пользователей, работающих на одном мощном сервере. не вижу проблем с безопасностью када нджинкс работает под www и проксирует на разные бекенды с разными юид/гид-ами. Товаришь выше правильно описал - достаточно пихнуть нджинкс в общую группу с хостами и расставить права. ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Хочу написать патч
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: Хочу написать патч
В рассылке 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: Хочу написать патч
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: Хочу написать патч
Думаю, что в поддержке такая система потребует много времени. Я вот, например, использую примерно такую конструкцию 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: Хочу написать патч
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: Хочу написать патч
> В апаче есть 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: Хочу написать патч
>для того чтобы обезопасить большое кол-во независимых проектов от разных > пользователей, работающих на одном мощном сервере. 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: Хочу написать патч
> Не выглядит это как производительное решение. никто же не мешает просто взять и померять. ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Хочу написать патч
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: Хочу написать патч
Кстати, а опишите задачу полностью, наверняка решается без подобного кодоблудия. 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: Хочу написать патч
> Такое - это более тысячи nginx бинарников, каждый запущенный из-под своего > пользователя. нет, в проде я такого не видел, у меня другая специализация. но и препятствий к этому не вижу никаких переключения контекста современный проц уж как-нибудь отработает. правда, следует заметить, что запустить apache+suexec окажется, скорее всего, выгоднее ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Хочу написать патч
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: Хочу написать патч
> Где-то такое видели уже в продакшене? Не тестировал, но уверен оверхед и > накладные расходы(не говоря уж о количестве процессов и управлении всем > этим) будут достаточно большие. Если где-то такое работает, то хотелось бы > про это почитать. такое - это какое? дедап? он приделан к ядру линуксовому уже давно. почитать - на вскидку только вот это: 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: Хочу написать патч
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: Хочу написать патч
> но если на одном сервере тысячи клиентов, то такое решение уже совсем не > подходит. да почему же? dedup страниц памяти на основании inode исполнимого файла/библиотеки не делся никуда же... ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Хочу написать патч
On 26.08.2015 13:29, Vasiliy Tolstov wrote: 26 авг. 2015 г. 12:01 пользователь "paperroot" <mailto:nginx-fo...@nginx.us>> написал: > > Konstantin Tokarev Wrote: > --- > > 25.08.2015, 17:37, "paperroot" <mailto:nginx-fo...@nginx.us>>: > > > Здравствуйте. > > > > > > Хочу написать патч, который будет отдавать контент предварительно > > > 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 <mailto:nginx-ru@nginx.org> > > > http://mailman.nginx.org/mailman/listinfo/nginx-ru > > > > -- > > Regards, > > Konstantin > > > > ___ > > nginx-ru mailing list > > nginx-ru@nginx.org <mailto: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 <mailto: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: Хочу написать патч
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: Хочу написать патч
В вашем случае будет несколько процессов 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
Re: Хочу написать патч
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: Хочу написать патч
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: Хочу написать патч
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
Хочу написать патч
Здравствуйте. Хочу написать патч, который будет отдавать контент предварительно 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