From 8f32ece4ea79f4e9e22d84b85291bcb81e259290 Mon Sep 17 00:00:00 2001 From: iBug Date: Tue, 1 Oct 2024 23:25:30 +0800 Subject: [PATCH] mirrors/limiter: HEAD limiter is disabled --- docs/services/mirrors/limiter.md | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/docs/services/mirrors/limiter.md b/docs/services/mirrors/limiter.md index 3ad0b24c..5b8c6ca4 100644 --- a/docs/services/mirrors/limiter.md +++ b/docs/services/mirrors/limiter.md @@ -57,8 +57,8 @@ 1. 全局请求速率限制器:对所有请求,限制单 IP 的请求速率。 2. 全局请求数限制器:对于所有请求,**检测**单 IP 在一天内的累计请求数。超过阈值后,降低该 IP 的*全局请求速率限制器*的阈值。 -3. HEAD 请求数限制器:对于 HTTP Method = HEAD 类型的请求,**检测**单 IP 在一天内的累计请求数。超过阈值后,开启 *HEAD 请求速率限制器*。 -4. HEAD 请求速率限制器:对于 HTTP Method = HEAD 类型的请求,限制单 IP 的请求速率。**该限制器默认关闭。** +3. ~~HEAD 请求数限制器:对于 HTTP Method = HEAD 类型的请求,**检测**单 IP 在一天内的累计请求数。超过阈值后,开启 *HEAD 请求速率限制器*。~~ +4. ~~HEAD 请求速率限制器:对于 HTTP Method = HEAD 类型的请求,限制单 IP 的请求速率。**该限制器默认关闭。**~~ 5. 断点续传请求速率限制器:对于断点续传类型的请求,限制单 IP 的请求速率。 6. 断点续传连接数限制器:对于断点续传类型的请求,限制单 IP **单 URI** 的连接数。 7. 目录请求速率限制器:对于列目录类型的请求,限制单 IP 请求速率。 @@ -68,22 +68,28 @@ - 例外: 1. apt/yum 仓库的索引文件不受限制。 - 2. AOSP 仓库不限制全局请求数(git objects 太多了,用户反馈见 [:octicons-mark-github-16: Issue 397](https://github.com/ustclug/discussions/issues/397))。 + 2. AOSP 仓库不限制全局请求数(git objects 太多了,用户反馈见 [:octicons-mark-github-16: Issue 397](https://github.com/ustclug/discussions/issues/397));nix-channels 也不限制全局请求数(nix 包管理器默认开启 16 并发)。 + + 例外文件的定义参考 `/etc/nginx/conf.d/access_limiter.conf`。 - 案例:曾遇到过攻击者分布式请求同一个大文件,导致 IO、网络同时过载。基于 IP 地址的限制措施对于源地址池很大的攻击往往没有效果,限制单文件的请求速率能够有效缓解这类攻击。 具体参数参考下表: | 限制器名称与代号 | 阈值单位 | 阈值 | 突发量 | 计数器重置周期 | 动作 | | :----------------------------------: | :------: | :---: | :----: | :------------: | :------------------------------------: | -| 全局请求速率限制器 `Main-Req` | 次/秒 | 40 | 100 | / | 返回 429 错误 | -| 全局请求数限制器 `Main-Count` | 次 | 15000 | / | 1 天 | 设置全局请求速率限制器阈值为 0.2 次/秒 | -| HEAD 请求数限制器 `Head-Count` | 次 | 300 | / | 1 天 | 开启 HEAD 请求速率限制器 | -| HEAD 请求速率限制器 `Head-Req` | 次/秒 | 0.05 | 5 | / | 返回 429 错误 | -| 断点续传请求速率限制器 `Partial-Req` | 次/秒 | 1 | 10 | / | 返回 429 错误 | -| 断点续传连接数限制器 `Partial-Conn` | 条 | 1 | 0 | / | 返回 429 错误 | -| 目录请求速率限制器 `Ls-Req` | 次/秒 | 0.5 | 10 | / | 返回 429 错误 | -| 文件请求速率限制器 `File-Req` | 次/秒 | 5 | 25 | / | 返回 429 错误 | -| 文件请求连接数限制器 `File-Conn` | 条 | 100 | 0 | / | 返回 429 错误 | +| 全局请求速率限制器
`Main-Req` | 次/秒 | 40 | 100 | / | 返回 429 错误 | +| 全局请求数限制器
`Main-Count` | 次 | 15000 | / | 1 天 | 设置全局请求速率限制器阈值为 0.2 次/秒 | +| HEAD 请求数限制器
`Head-Count` | 次 | 300 | / | 1 天 | 开启 HEAD 请求速率限制器 | +| HEAD 请求速率限制器
`Head-Req` | 次/秒 | 0.05 | 5 | / | 返回 429 错误 | +| 断点续传请求速率限制器
`Partial-Req` | 次/秒 | 1 | 10 | / | 返回 429 错误 | +| 断点续传连接数限制器
`Partial-Conn` | 条 | 1 | 0 | / | 返回 429 错误 | +| 目录请求速率限制器
`Ls-Req` | 次/秒 | 0.5 | 10 | / | 返回 429 错误 | +| 文件请求速率限制器
`File-Req` | 次/秒 | 5 | 25 | / | 返回 429 错误 | +| 文件请求连接数限制器
`File-Conn` | 条 | 100 | 0 | / | 返回 429 错误 | + +!!! note "HEAD 限制器已关闭" + + 考虑到 ZFS 对 dnode 的缓存非常有效,在接到 AOSC 社区的反馈后,我们完全关闭了 HEAD 请求数限制器。 ??? note "How lua-resty-limit-traffic works"