@ronny

Почему не работают два limit_req в разных location?

Проблема следующая. Есть конфинг nginx

http {

  limit_req_zone $binary_remote_addr zone=api_limit1:5m rate=1r/m;
  limit_req_zone $binary_remote_addr zone=api_limit2:5m rate=1r/m;

  server {

    location = /api/user/ {
        limit_req zone=api_limit2 nodelay;
        # break;

        add_header Set-Cookie "user=$user;Path=/;Max-Age=11111";

        return 200;
    }

    location ~ ^/api/ {
      limit_req zone=api_limit1 nodelay;
      proxy_pass http://api_server;
    }


На `location ~ ^/api/` лимиты отрабатываются правильно: на автором запросе ошибка лимита.

А вот на `location = /api/user/` - не работает вообще: выдает 200 с установкой куки всегда. Если разкомментить `# break;`, то на первом запросе выдает 404, а на втором - как надо, ошибку лимита.

Что я делаю не так?
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 1
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Потому что return 200 работает вообще всегда, хоть deny all напишите в этом локейшене. Отдавайте что-нибудь более вменяемое.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы