Ответы пользователя по тегу Nginx
  • Как бороться с нагрузкой при зажатии F5 на wp-login?

    mdounin
    @mdounin
    Разработчик nginx
    Судя по:
    location = /wp-login.php {
        limit_req zone=one burst=1 nodelay;
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        limit_req_status 444;
    }
    в приведённом конфиге, вы уже знаете, как правильно решать эту проблему (или это был ваш предшественник?). Использование limit_req - правильный путь, но, видимо, он используется не для всех важных ресурсов. Проще всего применить limit_req для всех обращений к php, выставив достаточно большой burst:
    location ~ \.php$ {
        limit_req one burst=30 nodelay;
        ...
    }


    При этом rate в limit_req_zone можно бы и опустить, скажем, до 5r/m, т.к. редкий настоящий пользователь способен просмотреть более 30 страниц подряд, тратя при этом менее 15 секунд на страницу. Но при этом важно убедиться, что во всех использующих эту зону limit_req'ах установлен разумный burst, а не 1.

    Подробнее про limit_req можно прочитать в документации.

    (Отмечу в скобках, что в вашем конфиге отсутствует "\" перед "." в "location ~ .php$", в результате в location могут попасть не относящиеся к нему запросы, т.к. просто точка в регулярном выражении - это любой символ.)
    Ответ написан