ngx_http_layouts_filter_module

Igor Sysoev is at rambler-co.ru
Thu Feb 16 13:44:11 MSK 2006


On Tue, 14 Feb 2006, Anton Maksimenkov wrote:

> По идее всё просто: ПЕРЕД страницей (после HTTP-заголовков видимо)
> вставить верхний layout (неважно, что после этого будет <head>,
> <html>..., всё равно ДОСТАТОЧНО нормально работает); и ПОСЛЕ страницы
> вставить нижний layout.
>
> Мне казалось, что вся страница (не заголовки, они вроде как отдельно)
> хранится в некой переменной (или в указателе, неважно). Поэтому
> думалось что достаточно ПЕРЕД передачей этой переменной передать
> верхний layout, а ПОСЛЕ передачи этой переменной передать нижний
> layout.
> Развитие "парсить html-ку на тему поиска <html> и вставки верхнего
> layout'а точно после неё" можно оставить на (далёкое) будущее.
>
> Было бы вкусно иметь все фичи: файлы, FastCGI, ответы некоего
> http-сервера (тело опять же, без заголовков есс-но). Но файлы - это
> _необходимый_ минимум :-).
> И ещё: файлы, если они будет кэшированы, должны перечитываться хотя
> бы по -HUP (чтобы изменения этих файлов были подхвачены).

Мне кажется, добавлять что-то перед началом ответа в настоящее время
не стоит - современные браузеры по разному воспринимают ответ с
DOCTYPE и без него.

В общем, я на данный момент планирую сделать такую функциональность
post_action:

1) post_action            /uri
2) post_action_pass_body  [on | off]
3) post_action_types      [text/html | */*]

Аккаунтинг:

    post_action             /uri;
    post_action_pass_body   off;
    post_action_types       */*;

Добавление в конец ответа:

    post_action             /uri;
    post_action_pass_body   on;
    post_action_types       text/html;


>>> Решил попробовать сделать модуль а-ля mod_layout собственноручно,
>>> в помощь таким же страждущим. Всвязи с этим необходима консультативная
>>> помощь тех, кто более-менее знает внутреннее устройство nginx (если
>>> такие есть кроме Игоря).
>>> Вводная: модуль должен добавлять ДО и ПОСЛЕ страницы заданные куски.
>>> Фичность будет уточняться по мере написания/помощи.
>>> Решил использовать шаблоном ngx_http_headers_filter_module.
>>> Для начала вставить вместо одного из хидеров - верхний layout,
>>> заданный директивой "layout текст_его"
>> ngx_http_headers_filter_module - это неудачный старт для подобной
>> функциональности. В принципе, добавить такой модуль мне не сложно,
>> нужно только оговорить функциональность. Я могу сделать следущее:
>> тупо добавлять в конец ответа подзапрос (это может быть статический файл,
>> ответ прокси или FastCGI). Никакого парсинга ответа - подзапрос будет
>> после </html>, так же, как сделано на narod.ru и boom.ru (и вроде
>> в соверменных браузерах вполне работает). Можно сделать такое же
>> дубовое добавление перед ответом, но я не знаю, как к этому отнесутся
>> бразуеры.
>
> -- 
> engineer
>
>
>
>
>

Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list