Четверг, 25 Декабрь 2008
nginx: ssi for last
Реализовал в своем цикле for для ssi дерективу lastfor
.
Реализовал в своем цикле for для ssi дерективу lastfor
.
Представляю патч который реализует комманды for
и endfor
.
Представляю патч который добавляет в nginx две функции
ngx_str_t *ngx_http_ssi_get_variable(ngx_http_request_t *r, ngx_str_t *name,
ngx_uint_t *key);
ngx_str_t *ngx_http_ssi_set_variable(ngx_http_request_t *r, ngx_str_t *name,
ngx_uint_t *key, ngx_str_t *value);
и возможность получать доступ к ssi перменным через $ssi_name
.
В рассылке nginx-ru сегодя спросили о ETag. Я не смог себе отказать в удовольствие его написать ☺.
Продолжая описывать и выкладывать свои «фичи» для nginx, я не мог пропустить is_bot.
В процессе обсуждения нового аллокатора мне сообщил о jemalloc и предложили реализовать их всех, добавив соотвествующие опции.
Работая, пришлось подменить аллокатор для nginx. Результат понравился мне (измерения все делались top’ом).
Сидел я себе на работе, наслаждаясь нормальными стаканчиками, и захотелось мне иметь возможность написать в nginx.conf такую вот конструкцию:
location /response {
response "<root><pid>$pid</pid></root>";
response_type "text/xml";
}
Подумал я немного, поспрашивал разных умных, да и не очень, людей и написал, в итоге модуль. Авось кому еще пригодиться.
Патч добавляет опцию --with-http_response_module
в ./configure, и две директивы в конфиг response
и response_type
, если response_content_type не установлен, берется значение из default_type.
Для наложения можно использовать обычный patch.
Как оказалось, nginx, не умеет подставлять через переменные текущий timestamp. Обучающий patch
Во время написания модулей приходится постоянно пользоваться аллокатором nginx и ему очень не хватает realloc.