gotosocial/docs/locales/zh/configuration/trusted_proxies.md
CDN 62f25ea08a
[docs/zh] Update zh docs: synced to e10de84 (#3763)
* [docs/zh] Update zh docs: synced to e10de84

* [docs/zh] update mkdocs config of zh docs

* [docs/zh] update repo docs translations (README, ROADMAP, CONTRIBUTING) + update swagger schema metadata of docs/zh
2025-02-09 11:13:08 +01:00

172 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 可信代理
为了正确执行[速率限制](../api/ratelimiting.md)GoToSocial 依赖于“可信代理”的概念,以准确确定访问你的实例的客户端的 IP 地址。
“可信代理”是一个中间网络跳转层GoToSocial 可以配置为信任由该代理层提供的正确的客户端 IP 地址。
例如,如果你使用 Docker + Nginx 的反向代理配置中运行,那么 Nginx 的 Docker 网络地址应该被配置为可信代理,因为从广域互联网传入的所有流量将通过 Nginx 进入 GoToSocial。
如果没有正确设置 `trusted-proxies` GoToSocial 将看到所有的入站客户端的 IP 地址都是同一个地址,这会导致速率限制的问题,因为 GoToSocial 使用客户端 IP 地址来执行速率限制。
## 总结:如何正确设置 `trusted-proxies`
如果你的 `trusted-proxies` 设置没有正确配置你可能会在实例的网页视图中看到以下警告v0.18.0及以上版本):
> 警告!此实例的配置中 trusted-proxies 的设置似乎不正确。这可能导致速率限制问题,进而导致联合问题。
>
> 如果你是实例管理员,你应该通过将 `SUGGESTED_IP_RANGE` 添加到你的 trusted-proxies 来修复此问题。
要解决这个问题可以复制消息中的IP范围并编辑你的 `config.yaml` 文件将IP范围添加到你的 `trusted-proxies` 中。
!!! tip "即使你没有看到上述警告,你也可能会遇到速率限制!"
如果你使用的是低于 v0.18.0 版本的 GoToSocial或者你在 Cloudflare不推荐 这样的 CDN 之后运行,你将不会看到警告消息。相反,你会在 GoToSocial 日志中看到所有客户端的 IP 都是同一个地址。在这种情况下,可以将重复出现的客户端IP值作为`SUGGESTED_IP_RANGE`。
在下面例子中,我们假定`SUGGESTED_IP_RANGE`为`172.17.0.1/16`默认的Docker桥接网络子网
修改之前(默认配置):
```yaml
trusted-proxies:
- "127.0.0.1/32"
- "::1"
```
修改之后(新配置):
```yaml
trusted-proxies:
- "172.17.0.1/16"
- "127.0.0.1/32"
- "::1"
```
如果你使用[环境变量](../configuration/index.md#环境变量)来配置你的实例,可以通过设置环境变量`GTS_TRUSTED_PROXIES`为以逗号分隔的IP范围列表来配置`trusted-proxies`,如下所示:
```env
GTS_TRUSTED_PROXIES="172.17.0.1/16,127.0.0.1/32,::1"
```
如果你使用 docker compose你的 docker-compose.yaml 文件在更改后应如下所示(注意 yaml 使用 `:` 而不是 `=`:
```yaml
################################
# 其他配置内容 #
################################
environment:
############################
# 其他环境变量 #
############################
## 对于反向代理设置:
GTS_TRUSTED_PROXIES: "172.17.0.1/16,127.0.0.1/32,::1"
################################
# 其他配置内容 #
################################
```
一旦你完成了必要的配置更改,**重启你的实例**并刷新主页。
如果消息消失,则问题已解决!
如果你仍然看到警告消息,但显示了一个不同的建议添加到`trusted-proxies`的 IP 范围,那么重复上述步骤,在你的配置中添加新的建议 IP 范围。
!!! tip "Cloudflare 的 IP 地址列表"
如果你在 GoToSocial 实例前面使用 CDN/代理,例如 Cloudflare (不推荐),那么你可能需要将一个或多个 Cloudflare IP 地址添加到你的 `trusted-proxies`以便速率限制正常工作。你可以在这里找到Cloudflare 的 IP 地址列表: https://www.cloudflare.com/ips/
## 我可能无法正确配置 `trusted-proxies`,可以直接禁用警告吗?
在某些情况下,很难实际正确配置 `trusted-proxies` 来检测入站请求的真实客户端 IP或者确保真实客户端 IP 是准确、但是仍显示为在私有网络内的。
例如,如果你在家用网络上运行 GoToSocial且实例位于无法注入 `X-Forwarded-For` 标头的家庭互联网路由器之后,那么建议你添加到 `trusted-proxies` 的条目看起来会像 `192.168.x.x`,但将其添加到 `trusted-proxies` 后问题依然无法解决。
另一个例子是:你在家庭网络上运行 GoToSocialGoToSocial 连接到家庭网络的路由器,并且你从同样在你家庭网络设备(比如笔记本或手机)上访问 Web 前端。在这种情况下,你的路由器可能会直接将你发送到你的 GoToSocial 实例,且你的请求不会离开家用网络,因此 GtS 将正确地认为*你的*客户端 IP 地址是一个私人网络地址,但*其他*从更广泛的互联网传入的请求将显示其真实的远程客户端 IP 地址。在这种情况下,`trusted-proxies` 的警告实际上不适用。
如果你已尝试编辑 `trusted-proxies` 设置,但仍看到警告,可能上面的一个例子适用于你。你可以通过以下两种方式之一继续:
### 为家庭网络添加速率限制例外(推荐)
如果 `trusted-proxies` 警告中的建议 IP 范围看起来像 `192.168.x.x`,但你在 GoToSocial 日志中仍看到其他客户端 IP 不以 `192.168` 开头,那么可以尝试只为家庭网络上的设备添加速率限制例外,同时对外部 IP 地址保持速率限制。
例如,如果你的建议是类似 `192.168.1.128/32`,那么将 `/32` 换为 `/24`,以便使范围覆盖 `192.168.1.0` -> `192.168.1.255`,并将其添加到 `config.yaml` 文件中的 `advanced-rate-limit-exceptions` 设置中。
默认设置(修改前):
```yaml
advanced-rate-limit-exceptions: []
```
设置修改后:
```yaml
advanced-rate-limit-exceptions:
- "192.168.1.128/24"
```
如果你使用[环境变量](../configuration/index.md#环境变量)来配置实例,可以将环境变量 `GTS_ADVANCED_RATE_LIMIT_EXCEPTIONS` 设为以逗号分隔的 IP 范围列表,来配置 `advanced-rate-limit-exceptions`,如下所示:
```env
GTS_ADVANCED_RATE_LIMIT_EXCEPTIONS="192.168.1.128/24"
```
如果使用 docker compose修改后的 docker-compose.yaml 文件应如下所示(注意 yaml 使用 `: ` 而不是 `=`)
```yaml
################################
# 其他配置内容 #
################################
environment:
############################
# 其他环境变量 #
############################
GTS_ADVANCED_RATE_LIMIT_EXCEPTIONS: "192.168.1.128/24"
################################
# 其他配置内容 #
################################
```
完成必要的配置更改后,**重启你的实例**并刷新主页。
### 完全关闭速率限制(最后手段)
如果其他方法无效,你可以完全禁用速率限制,这也会禁用 `trusted-proxies` 检查和警告。
!!! warning "警告"
完全关闭速率限制应被视为最后的手段,因为速率限制有助于保护你的实例免受骚扰信息和爬虫攻击。
要关闭速率限制,请在 `config.yaml` 中将 `advanced-rate-limit-requests` 设置为 0。
默认配置前:
```yaml
advanced-rate-limit-requests: 300
```
设置后:
```yaml
advanced-rate-limit-requests: 0
```
如果你使用[环境变量](../configuration/index.md#环境变量)来配置实例,可以通过将环境变量 `GTS_ADVANCED_RATE_LIMIT_REQUESTS` 设置为 0来配置 `advanced-rate-limit-requests`,如下所示:
```env
GTS_ADVANCED_RATE_LIMIT_REQUESTS="0"
```
如果使用 docker compose改变后的 docker-compose.yaml 文件应如下所示(注意 yaml 使用 `: ` 而不是 `=`)
```yaml
################################
# 其他配置内容 #
################################
environment:
############################
# 其他环境变量 #
############################
GTS_ADVANCED_RATE_LIMIT_REQUESTS: "0"
################################
# 其他配置内容 #
################################
```
完成必要的配置更改后,**重启你的实例**并刷新主页。