Nginx limit_req 不适用于 HTTP 到 HTTPS 重定向

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 的重定向。有什么想法吗?

答案1

我的理论是,速率限制不适用于 3xx 状态代码,这一点您也已经确认了。它可能仅适用于 200 状态代码。

查看源代码可能是确定这一点的一种方法,尽管我快速浏览了模块源代码,但没有什么特别之处。可能是模块仅使用特定的响应代码进行调用,我对 Nginx 源代码不够熟悉,无法快速解决。

相关内容