HAProxy使用源IP连接到后端

时间:2014-11-12 12:07:26

标签: http tcp load-balancing haproxy

我在具有多个接口的计算机上运行HAProxy,我希望与客户端请求所在的接口的源IP建立后端连接。使用listen块文档中的source指令似乎没有做到这一点,因为所有连接似乎都来自第一个界面。我的配置如下:

listen f_192.168.1.10_http
  bind 192.168.1.10:80
  source 192.168.1.10
  mode http
  option httplog
  capture request header Host len 30

  use_backend b_domain1_http if { hdr(host) -i domain1.com }

listen f_192.168.1.20_http
  bind 192.168.1.20:80
  source 192.168.1.20
  mode http
  option httplog
  capture request header Host len 30

  use_backend b_domain1_http if { hdr(host) -i domain1.com }

backend b_domain1_http
  mode http
  option httplog
  server srv1 domain1.com:80 check inter 30s

IE中。我很难在接口192.168.1.10上获得连接,以便在连接到后端时使其源IP为192.168.1.10。现在,无论连接是在192.168.1.10还是192.168.1.20上进行,到后端的传出连接都是从192.168.1.10开始的。我认为在listen中使用source会实现这一点但是当我查看netstat -at的输出时,所有与后端的连接都来自1个接口。

有没有人知道如何确保与后端的连接的源ip与原始客户端请求的接口相同?

1 个答案:

答案 0 :(得分:0)

我相信您可以使用来源作为服务器的参数。

backend be1
    ...
    server srv1 domain1.com:80 source ${frontend_ip} check inter 30s

我认为可以将%fi替换为${frontend_ip},您也可以使用%fp${frontend_port}来指定端口。这样就可以删除前端中的源语句。