Re: Пара вопросов о nginx

Ck-NoSFeRaTU nginx-forum at nginx.us
Sun Oct 25 08:16:33 MSK 2009


Maxim Dounin Пишет:

> Был такой fancy index module, не знаю жив ли ещё.
Видел я его, но он какой-то уродский на вид, практически не изменяется из конфига, толку вообщем мало.

> Потому что if() работает не так, как вам кажется.  Есть
> мнение, что использовать if() в  конфигах nginx'а имеет смысл в
> том и только в том случае, если вам не хватает приключений.
А какие ещё варианты? Как проверить на существование пары файлов и взависимости от их наличия придать определенное значение какому-либо параметру, без if()?

>> Возможно кто-то писал модули, может подскажете, а
>> как правильно, с точки зрения всех прослоек работы с
>> файлами, кешированием и прочим, имея путь до файла в
>> ngx_str_t получить содержимое файла, скажем в другой
>> ngx_str_t? Я так понял копать нужно в сторону
>> ngx_open_cached_file, но что-то пока не получается.
> Use The Source, Luke!
Ну, это само собой, но кода много, во всём разбираться понадобится много времени, возможно кто-то наизусть знает сорцы и может ткнуть в конкретное место или вообще процедурку набросать.

> Но правильнее всего - вообще не получать содержимое
> файла в другой ngx_str_t.  Если задача - отдать
> содержимое файла клиенту, то решение - подзапрос.
Уже пробовал через ngx_http_subrequest, но там проблема в том, что вставить содержимое надо в определенное место на странице, которая собирается в буфере и строится по кускам через ngx_cpymem, а потом целиком отсылается. Поэтому результат работы нужен в ngx_str_t, чтобы мона было запихать в середину буфера на нужное место.

> Или вообще выдать ssi инструкцию, а дальше пусть ssi
> модуль с этим и разбирается.
Да, возможно. Переделал под ssi. В принципе осталась только одна проблема. Почему-то такое:
set $temp "/12 34/56 78/";
if ($temp ~ ^(.*)$) {
   set $dir $1;
}
приравнивает переменной $dir значение кодированное в url entities... Т.е. получается /12%2034/56%2078/. Как бы зарубить этот "интеллект", хотя бы грубым хаком в сорцах, что-то место, творящее такое колдунство не нашел :-(

> Именно location - единица конфигурации в nginx, так что
> как раз разнесение разных конфигураций по разным
> location'ам - правильно и единственно верно.
Только не когда они измеряются тысячами. Плюс постоянно дергать нгинкс на перечитку конфига после каждого изменения, когда это всё бы решилось двумя простыми if`ами и работало бы динамически :-/

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






More information about the nginx-ru mailing list