将路径附加到主机 HAPROXY

Appending Path to Host HAPROXY

我是 haproxy 的新手(实际上是一般的代理),我不知道如何向我的后端添加路径。我的后端定义为:

服务器 server1 ns.foo.com:7170 检查

我想添加 /web 以便将请求定向到 https://ns.foo.com:7170/web

谢谢, 马克

你需要的是HTTP重写 https://www.haproxy.com/doc/aloha/7.0/haproxy/http_rewriting.html#rewriting-http-urls

将此添加到您的后端应该可以解决您的问题:

acl p_root path -i /
http-request set-path /web if p_root

如果您想将来自给定端口的请求发送到特定路径, 您可以通过使用 set-path 操作指定 http 请求规则在前端或后端配置中修改请求

例如,如果您想向 /web 发送任何请求,那么您应该写

http-request set-path /web

进入你的后端配置

否则,如果您想在传入请求路径前加上 /web (例如
本地主机:[端口]/somepath
应该去
serverhost:[serverport]/web/somepath) 如 Mawardy 所问。

那么你也应该像这样使用 %[path] 变量

http-request set-path /web/%[path]

我已经在 docker 中创建了 spring 服务器 运行 2 个实例的概念证明 在 docker 中使用 HA 代理进行负载平衡,该代理还根据赢得负载平衡的服务器修改路径。 为此,ha 代理被配置为在其自己的前端之间进行负载平衡,这些前端具有自己的后端以及修改后的路径

配置看起来像这样

defaults
  retries           3
  maxconn           20
  timeout connect   5s
  timeout client    6s
  timeout server    6s

frontend http-in
  bind *:9002
  mode http
  use_backend proxy-backend

backend proxy-backend
  balance roundrobin
  mode http
  option forwardfor
  http-response set-header X-Forwarded-Port %[dst_port]
  http-response set-header X-ProxyServer %s
  server proxy-server-1 localhost:9000
  server proxy-server-2 localhost:9001

frontend proxy-in1
  bind *:9000
  mode http
  use_backend poc-server2
frontend http-in2
  bind *:9001
  mode http
  use_backend poc-server1

backend poc-server1
  mode http
  http-response set-header X-Server %s
  http-request set-path /api/one/%[path]
  server poc-server-1 proxypochost1:9000

backend poc-server2
  mode http
  http-response set-header X-Server %s
  http-request set-path /api/two/%[path]
  server poc-server-2 proxypochost2:9001

有关更多信息,您可以在此处的自述文件中查看整个项目以及一些附加信息:ha-proxy-poc