Поисковые боты часто дёргают сайты, чем создают большую нагрузку. Была предпринята попытка ограничить запросы к 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 mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru