haproxy 可以通过引用 URL 进行负载平衡吗?(过滤 Slashdot 场景)

Rob*_*bin 4 load-balancing haproxy

我有一个性能不佳的网络应用程序,它将被大规模扩展以应对互联网的重量。

Haproxy 将用于将无状态 Web 请求发送到许多服务器。但是,可能到来的流量仍然有限,我想优先考虑真正的用户。

haproxy 可以配置为将流量从特定的引用 URL 发送到特定的框吗?

例如,如果新闻文章中提到了部署的网关,我可以将来自该文章的流量重定向到一个快速的静态 HTML 站点,并说“谢谢您的关注,这里有一些信息。”?

如果这是可能的,也许有人可以共享配置文件中的相关片段。

Eig*_*ony 7

是的,它可以。从文档中

hdr_dir

hdr_dir(标题)

当标头之一包含分隔或由斜杠分隔的字符串之一时,返回 true。这用于执行文件名或目录名匹配,并且可以与 Referer 一起使用。有关标头匹配的更多信息,请参阅“hdr”。

因此,您可以检查 hdr_dir(referer) 以查看它是否与特定路径匹配,如果匹配,则设置一个标志,然后根据该标志将流量发送到各个目的地。

acl slashdot hdr_dir(referer) -i /some/path
  use_backend cluster1 if slashdot
  use backend cluster2 if !slashdot

backend cluster1
  server servera 192.168.0.50:80

backend cluster2
  server serverb 192.168.0.51:80
Run Code Online (Sandbox Code Playgroud)

未经测试。

  • *注意'referrer'标题的拼写错误,应该是'referer'。无法编辑,因为只有 2 个字符要更改,而我的代表:/ 但由于拼写错误,示例不起作用 (2认同)