追加主机HAPROXY的路径

时间:2016-11-03 13:07:18

标签: proxy haproxy

我是haproxy的新手(实际上通常是代理),我无法弄清楚如何为我的后端添加路径。我的后端定义为:

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

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

谢谢, 标记

2 个答案:

答案 0 :(得分:0)

您需要的是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

答案 1 :(得分:0)

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

例如,如果您要将任何请求发送到/ web,则应写

http-request set-path /web

进入您的后端配置

否则,如果您想在传入请求路径前添加/ web (例如
本地主机:[端口] / somepath
应该去
服务器主机:[服务器端口] / web / somepath),按Mawardy的要求。

然后,您还应该使用%[path]变量

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

我创建了一个在docker中运行2个实例的spring服务器的概念证明 使用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