我在具有多个接口的计算机上运行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与原始客户端请求的接口相同?
答案 0 :(得分:0)
我相信您可以使用来源作为服务器的参数。
backend be1
...
server srv1 domain1.com:80 source ${frontend_ip} check inter 30s
我认为可以将%fi
替换为${frontend_ip}
,您也可以使用%fp
或${frontend_port}
来指定端口。这样就可以删除前端中的源语句。