ПРОЕКТЫ 


  АРХИВ 


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: Отдельный лог файл для м одуля ngx_http_limit_req_module



Hello!

On Tue, Mar 15, 2011 at 06:52:30PM +0300, Alex Beljanski wrote:

> Доброго времени суток.
> В общем, ситуация такая.
> Есть модуль ngx_http_limit_req_module, работает отлично и выдает
> 503-ую ошибку кому надо. Ну т.е. в принципе с потоком всяких DDOS-еров
> справляется. Но вот хотелось бы чтобы он писал сообщение о том, что IP
> превысил порог запросов в отдельный файл, грубо говоря единый для
> виртуальных хостов.
> Сейчас у меня под каждый виртуальный хост свой error_log. Задать два
> error_log для виртуального хоста я как понял нельзя, потому что nginx
> ругаться начинает.
> Я просто думал на разные error_log повесить сообщения с разным уровнем
> логирования.
> Ну т.е. для основного оставить info, а для другого сделать warn, при
> этом указав в limit_req_log_level тоже уровень warn.
> 
> Такого сделать не получилось, вот поэтому хотелось бы чтобы модуль
> ngx_http_limit_req_module свое сообщение помещал в отдельный файл,
> чтобы из него можно было потом выдергивать IP и особо ретивых банить
> на фаерволе.
> 
> Я с nginx новичок, и если можно как-то по-другому решить мою задачу,
> буду только признателен.

Можно отправить обработку 503 в отдельный location, и там завести 
отдельный (или дополнительный) access_log, в который всё и будут 
попадать.  Как-то так:

    location / {
        error_page 503 /503.html;
        limit_req ...
        ...
    }

    location = /503.html {
        access_log /path/to/log format;
    }

В самом nginx'е 503 может возникнуть только из-за limit_req или 
limit_conn.  Но следует иметь ввиду, что если используется 
proxy_intercept_errors/fastcgi_intercept_errors - туда же попадут 
503-е ответы от бекендов.  При необходимости их отделять - надо 
логгировать значение $upstream_status, и проверять уже при анализе 
логов.

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.