Вопрос новичка - 2

Igor Sysoev is at rambler-co.ru
Fri Feb 10 10:09:48 MSK 2006


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





More information about the nginx-ru mailing list