Tag: docker haproxy

如何从haproxy docker容器中获取客户端IP?

我试图从我的nodejs服务器中的请求对象获取客户端的IP地址。 我的技术结构是:我运行两个docker集装箱。 一个是haproxy ,另一个是使用expressjs框架的expressjs 。 所有传入stream量首先由haproxy接收,我使用它代理和负载平衡。 Haproxy根据configuration文件中的ACLs将请求转发到适当的后端。 我尝试访问我的nodejs中的x-forwarded-for请求标头,但它只返回dockernetworking接口172.17.0.1的IP。 转到haproxyconfiguration,并在defaults块中使用option forwardfor header X-Client-IP还将x-client-ip头设置为docker网关接口ip。 此外,debugging日志也logging相同的IP。 所以这就是麻烦了。 由于haproxy在容器内部运行,因此认为haproxy网关接口是客户端。 我怎么能得到实际的客户端的IP haproxy在容器内,以便它可以转发到nodejs? 这是我的haproxyconfiguration文件: global debug maxconn 4096 defaults mode http timeout connect 5000ms timeout client 50000ms timeout server 50000ms timeout http-keep-alive 50000ms option http-keep-alive option http-server-close option forwardfor header X-Client-IP frontend http-in bind *:80 acl is_api hdr_end(host) -i api.3dphy-dev.com use_backend […]