ПРОЕКТЫ 


  АРХИВ 


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[2]: ngx_http_layouts_filter_module



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



 




Copyright © Lexa Software, 1996-2009.