ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



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




 




Copyright © Lexa Software, 1996-2009.