Skip to content

Commit

Permalink
mirrors/limiter: HEAD limiter is disabled
Browse files Browse the repository at this point in the history
  • Loading branch information
iBug committed Oct 1, 2024
1 parent fd83945 commit 8f32ece
Showing 1 changed file with 18 additions and 12 deletions.
30 changes: 18 additions & 12 deletions docs/services/mirrors/limiter.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 请求速率。
Expand All @@ -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 错误 |
| 全局请求速率限制器<br>`Main-Req` | 次/秒 | 40 | 100 | / | 返回 429 错误 |
| 全局请求数限制器<br>`Main-Count` || 15000 | / | 1 天 | 设置全局请求速率限制器阈值为 0.2 次/秒 |
| HEAD 请求数限制器<br>`Head-Count` || 300 | / | 1 天 | 开启 HEAD 请求速率限制器 |
| HEAD 请求速率限制器<br>`Head-Req` | 次/秒 | 0.05 | 5 | / | 返回 429 错误 |
| 断点续传请求速率限制器<br>`Partial-Req` | 次/秒 | 1 | 10 | / | 返回 429 错误 |
| 断点续传连接数限制器<br>`Partial-Conn` || 1 | 0 | / | 返回 429 错误 |
| 目录请求速率限制器<br>`Ls-Req` | 次/秒 | 0.5 | 10 | / | 返回 429 错误 |
| 文件请求速率限制器<br>`File-Req` | 次/秒 | 5 | 25 | / | 返回 429 错误 |
| 文件请求连接数限制器<br>`File-Conn` || 100 | 0 | / | 返回 429 错误 |

!!! note "HEAD 限制器已关闭"

考虑到 ZFS 对 dnode 的缓存非常有效,在接到 AOSC 社区的反馈后,我们完全关闭了 HEAD 请求数限制器。

??? note "How lua-resty-limit-traffic works"

Expand Down

0 comments on commit 8f32ece

Please sign in to comment.