ПРОЕКТЫ 


  АРХИВ 


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



On Fri, 10 Feb 2006, Alex Tutubalin wrote:

есть (будет) некий сервис, который отдает пользователям очень
мелкие ответы по HTTP. Буквально 20-30 байт на запрос.

Для демо-версии хочется ограничить rate с IP или даже с сабнета.
Естественно, не в килобайтах в секунду (это же ограничение в рамках
одного запроса?) а в запросах в единицу времени.

Куда копать ?

Банальное решение сделать sleep() в начале ответа очень не нравится.

Делается модуль, который вешается на фазу POST_READ.

Делает примерно следующее:

ngx_http_delay_handler(ngx_http_request_t *r)
{
    if (r->connection->write->delayed) {
        r->connection->write->delayed = 0;
        return NGX_OK;
    }

    ngx_add_timer(r->connection->write, 1000);  /* 1s */
    r->connection->write->delayed = 1;

    return NGX_AGAIN;
}

Вызвать ngx_handle_read_event() и ngx_handle_write_event(), скорее всего,
не нужно.


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



 




Copyright © Lexa Software, 1996-2009.