Рейтинг:1

Конфигурация ограничения скорости не работает в nginx

флаг mx

Я пытаюсь ограничить скорость любых вызовов URL-адресов с префиксом /api/, я настроил ограничение скорости с прикрепленной конфигурацией, но я не вижу никакого дросселирования при использовании Axios для тестирования.

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
сервер {
    имя_сервера gmmff.test;
    корень /home/angel/wdev/laravel/gmf/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    error_log /var/log/nginx/gmf.log предупреждение;
    журнал_доступа /var/log/nginx/gmf-access.log;
    индекс index.php;

    кодировка utf-8;

    место расположения / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    расположение /API/ {
        зона limit_req = мой лимит;
        переписать ^/api/(.*)$ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found выключен; }
    location = /robots.txt { access_log off; log_not_found выключен; }

    страница_ошибки 404 /index.php;

    расположение ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        включить fastcgi_params;
    }

    расположение ~ /\.(?!известно).* {
        отрицать все;
    }

}
Рейтинг:0
флаг jp

URI, начинающиеся с /апи/ переписаны на /index.php и limit_req директива больше не находится в области действия, когда последний URI обрабатывается.

Вариант 1) Вы можете обработать index.php файл внутри расположение /апи/ блокировать.

Например:

расположение /API/ {
    зона limit_req = мой лимит;
    включить fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $realpath_root/index.php;
    fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
}

Просто укажите SCRIPT_FILENAME к местонахождению index.php.


Вариант 2) Переместить limit_req директива, чтобы она всегда была в области видимости, но эффективно включать и выключать ее, манипулируя переменной «key» с помощью карта директива.

Например:

карта $request_uri $токен {
    ~^/api/ $binary_remote_addr;
    По умолчанию    '';
}
limit_req_zone $token zone=mylimit:10m rate=1r/s;

сервер {
    ...
    зона limit_req = мой лимит;
    ...
}

От документация:

Запросы с пустым значением ключа не учитываются.

Angel avatar
флаг mx
Я пробовал метод номер 1 со следующей конфигурацией https://pastebin.com/fC5EBifi. Я установил скорость 3 об / с, но конечным результатом было ограничение скорости на уровне 1 об / с, я попробовал метод 2 и тот же результат .

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.