Welcome! Log In Create A New Profile

Advanced

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

Maxim Dounin
October 24, 2009 07:28PM
Hello!

On Sat, Oct 24, 2009 at 05:56:27PM -0400, Ck-NoSFeRaTU wrote:

> Хочу сделать небольшой архив файлов, но помимо индекса файлов нужны описания и
> скриншоты. Никакие php-цмски не хочу юзать, perl тоже не хочется
> использовать. Немного модифицировал autoindex с закосом на lighttpd и
> возможностью вставлять свои куски текста в страничку. Но появились некоторые

Был такой fancy index module, не знаю жив ли ещё.

> трудности. Почему при такой конфигурации:
>
> if (-e $request_filename/.description.txt) {
> autoindex_readme_path .description.txt;
> }
> if (-e $request_filename/.cover.jpg) {
> autoindex_readme_text ""; autoindex_footer_text "";
> }
>
> присваиваются значения для параметров только в последнем if? Т.е.
> autoindex_readme_path получается пустой, хотя если удалить второй if с
> содержимым - всё путём. Попытался это обойти с помощью нескольких условий, типа
> такого:

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

[...]

> if (-e $request_filename/.description.txt && $found = 0) {
> param2=y;
> }
>
> Но опять же столкнулся с тем, что OR/AND похоже не поддерживаются, как и скажем
> else. Планируется ли добавить такую поддержку?

Врядли. Сделать сейчас это можно через регулярные выражения.

[...]

> Также вопрос: а как можно приравнивать параметр к переменной? Т.е.
> что-то типа:
> set $param "123";
> autoindex_readme_text $param;
>
> Хочется чтобы значение autoindex_readme_text получилось 123, а получается
> $param :-/

Поддержку переменных надо реализовавать в модуле. Смотрите
примеры в коде, там их много хороших и разных.

А макросов в конфигах nginx'а нет и никогда не было - sed всех
спасает.

> Возможно кто-то писал модули, может подскажете, а как правильно, с точки зрения
> всех прослоек работы с файлами, кешированием и прочим, имея путь до файла в
> ngx_str_t получить содержимое файла, скажем в другой ngx_str_t? Я так понял
> копать нужно в сторону ngx_open_cached_file, но что-то пока не получается.

Use The Source, Luke!

Но правильнее всего - вообще не получать содержимое файла в другой
ngx_str_t. Если задача - отдать содержимое файла клиенту, то
решение - подзапрос. Или вообще выдать ssi инструкцию, а дальше
пусть ssi модуль с этим и разбирается.

> Также видел в рассылке за 2005 год сообщения о том, что неплохо бы реализовать
> переменную $request_dir, содержащую имя папки запроса, но я так понял дело
> до реализации не дошло?

Не дошло.

> ЗЫ. Пока всё сделал забивая все описания в конфиг, разграничивая location`ами,
> но это и не удобно и некошерно. Получилось так:

Именно location - единица конфигурации в nginx, так что как раз
разнесение разных конфигураций по разным location'ам - правильно и
единственно верно.

Maxim Dounin
Subject Author Posted

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

Ck-NoSFeRaTU October 24, 2009 05:56PM

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

Maxim Dounin October 24, 2009 07:28PM

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

Ck-NoSFeRaTU October 25, 2009 01:16AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 295
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready