Назад | Перейти на главную страницу

Nginx limit_req не работает для перенаправления HTTP на HTTPS

У меня в конфигурации есть следующее для перенаправления HTTP-трафика на https:

server {
    listen 80 default_server;
    limit_req zone=one burst=100;
    listen [::]:80 default_server;
    server_name _;
    return 301 https://$host$request_uri;
         }

В моем блоке https-сервера у меня есть

 server {
      listen  443;
      limit_req zone=one burst=100;
----MORE CONFIGS HERE-----
         }

Когда я запускаю тест, чтобы увидеть, работает ли limit_req, я запускаю следующее:

ab -n 100000 -c 1000 https://myurlhere.com

Limit_req отлично работает.

Однако когда я бегу

ab -n 100000 -c 1000 http://myurlhere.com

limit_req не перехватывает перенаправление с http на https. Есть идеи, почему?

Моя теория, которую вы подтвердили, заключается в том, что ограничение скорости не распространяется на коды состояния 3xx. Это может относиться только к 200 кодам состояния.

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