Приветствую, уважаемые!
Мне на сервере нужно ограничить скорость запросов только php-страниц,
не трогая запросы статического контента (картинок, js, фонтов и т.п.).
Я сделал такой конфиг:
http {
...
limit_req_zone $binary_remote_addr zone=zone_one:10m rate=1r/s;
...
server {
...
location ~ \.php$ {
...
limit_req zone=zone_one burst=10;
...
}
...
location / {
try_files $uri $uri/ =404;
}
}
}
Выглядит всё неплохо, пока на сервер не начинают заходить роботы гугля:
их запросы php-страниц получают ошибку 503 уже со второго запроса,
а не с десятого, как было задумано.
Когда начал смотреть логи, то вижу, что запросы от робота выглядят так
(все эти запросы идут менее, чем за секунду):
1. Запрос первой php-страницы: ответ 200.
2. Запрос нескольких десятков картинок, скриптов и т.п.: ответ 200.
3. Запрос второй php-страницы: ответ 503.
4. Запрос нескольких десятков картинок, скриптов и т.п.: ответ 200.
5. Запрос третьей php-страницы: ответ 503.
6. ...
То есть выглядит так, что в ограничительное ведро наливаются все подряд
запросы, а не только запросы php-страниц, поэтому запросы php-страниц
начинают фильтроваться слишком рано.
Может кто-нибудь подкинуть идею - как решить эту задачу правильно?