HAProxy 将连接定向到正确的服务器

HAProxy 将连接定向到正确的服务器

我在 pfSense Haproxy 后面有两台服务器,我需要确保用户根据 url 的一部分登陆同一台服务器。

http://mydomain/<location>/..../....

就我而言,始终是域名后的第一个斜杠,因此所有具有相同域名的用户都应该在同一台服务器上。

有什么建议么?

答案1

没有原生的方法可以做到这一点,但稍加调整就可以使其工作。

您需要提取前端所需的 URL 路径组件,并将其放置在一次性标头中,然后后端将使用该标头来选择服务器。

你的前端看起来有点像这样:

frontend fe_pfsense
  ...
  http-request set-header X-Location-Path %[capture.req.uri]
  http-request replace-header X-Location-Path ([^/]+)/.* \1
  use_backend be_pfsense
  ...

首先,我们提取 URI 并将其放在名为 的一次性标头中X-Location-Path
然后我们使用正则表达式查找并捕获第一个路径组件,并将其覆盖到相同的标头中。

你的后端看起来会像这样:

backend be_pfsense
  ...
  balance hdr(X-Location-Path)
  ...

我们使用hdr() 平衡根据我们在前端提取的路径算法来平衡。

或者,我认为您可以在使用以下任一行将标头发送到服务器之前将其删除,但您需要对其进行测试以确保事件的顺序按预期工作。

http-request del-header X-Location-Path

reqidel ^X-Location-Path:.*

相关内容