如何使用 Cloudflare 基于请求标头中的自定义字段正确实现多域路由?

问题描述 投票:0回答:1

有人可以建议基于请求标头中的自定义字段实现多域路由的正确方法吗?

我的用例是,我有一项服务位于 2 个不同的区域,从而产生两个独立的 AWS ELB:KR ELB 和 SG ELB。当 FE 向服务发送请求时,请求标头包含一个名为 ufeffregion 的字段,我们将使用该字段来确定请求应连接到哪个 ELB。我们确定了两种实现区域路由的方法:

  1. 起源规则
  2. CF工作人员

对于#1,它似乎完全满足我们的要求,允许我们定义规则并覆盖域。无需代码工作、GUI 配置,无需额外费用。这很棒。不幸的是,它似乎还不支持请求标头中的自定义字段。我们必须使用现有字段而不是自定义字段。 (作为一种解决方法,我们可以将字段放在 Origin Rules 支持的查询字符串中,但从设计角度来看并不理想)

对于#2,CF Worker 非常灵活,我们用它来实现各种功能,如缓存、重定向等。很容易实现一个 Worker,用于基于请求标头中的字段来路由请求。但我们确实有一些担忧。例如: 新工作人员需要匹配所有流量(使用像route = abc.com/* 这样的路由),这可能会增加延迟、成本和影响范围 我们需要自己实现代码,并仔细考虑链接多个工作人员的正确方法,因为这个过程可能会导致潜在的错误

有人可以分享对此的任何想法吗?我将不胜感激

cloudflare cloudflare-workers
1个回答
0
投票

我建议您使用#1 Origin Rules,因为您可以在表达式中使用

http.request.headers
字段,如

any(http.request.headers["yourcustomheadername"][*] == "sg")

这是我的博客文章,其中包含基于 WebSocket 标头的示例源路由。

Cloudflare 起源规则 を使って WebSocket 通信を别オリジンにルーティングする - Qiita

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.