我的配置中有以下内容将 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 源代码不够熟悉,无法快速解决。