Ограничение количества запросов

nNgzlTtv3k5lzmKRvlmS22tSl8sJr68k nginx-forum на forum.nginx.org
Пн Авг 8 10:21:14 UTC 2016


Поисковые боты часто дёргают сайты, чем создают большую нагрузку. Была
предпринята попытка ограничить запросы к php-страницам.
Вот конфиг nginx:

http {
	......

	limit_req_zone $bot_key zone=php_bot:100m rate=5r/s;

	log_format bot '$time_local $status $server_name ...'

	server {
		......

		location ~* \.php$ {
			......

			set $bot_key "";
			if ($http_user_agent ~* spider|bot|crawl|megaindex|yahoo){ set $bot_key
$server_name; }

			limit_req zone=php_bot;
			limit_req_status 503;
			limit_req_log_level notice;

			access_log /var/log/nginx/access-php-bot.log            bot    
if=$bot_key;
		}
	}
}

Секций server { ... } несколько, они все идентичные.
В итоге после полного перезапуска nginx в логе видим:

08/Aug/2016:12:27:00 +0300 200 site.com ... upstream_response_time=0.119
08/Aug/2016:12:27:00 +0300 503 site.com
08/Aug/2016:12:27:00 +0300 503 site.com
08/Aug/2016:12:27:00 +0300 200 site.com ... upstream_response_time=0.117
08/Aug/2016:12:27:00 +0300 503 site.com
08/Aug/2016:12:27:00 +0300 200 site.com ... upstream_response_time=0.116
08/Aug/2016:12:27:00 +0300 200 site.com ... upstream_response_time=0.022

08/Aug/2016:12:27:01 +0300 200 site.com ... upstream_response_time=0.129
08/Aug/2016:12:27:01 +0300 503 site.com ...
08/Aug/2016:12:27:01 +0300 200 site.com ... upstream_response_time=0.074
08/Aug/2016:12:27:01 +0300 503 site.com ...
08/Aug/2016:12:27:01 +0300 200 site.com ... upstream_response_time=0.030
08/Aug/2016:12:27:01 +0300 503 site.com ...

За "01" секунду всего 3 успешно обработанных запроса, за предыдущую - 4,
несмотря на то, что ограничение допускает обработку 5 запросов.
Почему так, в чём ошибка ? Какая временная метка указывается в логе -
момента прихода запроса или момента выдачи ответа ?
Даже если временная метка - это момент выдачи ответа, то всё равно маловато
выходит: за каждую из секунд не пропустилось максимально допустимое
количество запросов.
Как корректно проверять правильно ли работает конфигурация nginx, понял ли
nginx то, что от него хотели ?

Posted at Nginx Forum: https://forum.nginx.org/read.php?21,268830,268830#msg-268830



Подробная информация о списке рассылки nginx-ru