HAProxy - 如何在 X-Client-IP 和 X-Forwarded-For 标头中附加客户端 IP?

Kac*_*oSo 14 haproxy

我有 HAProxy 服务器的问题。我想在标头中转发客户端 IP。我几乎完成了,但是有一个有趣的案例,我无法弄清楚。我需要在标头的 2 个地方写入客户端 IP,在 X-CLIENT-IP 和 X-FORWARDED-FOR 标签中。

问题是:当我使用

option http-server-close
option forwardfor
Run Code Online (Sandbox Code Playgroud)

在目标服务器上,我在标题 X-FORWARDED-FOR=xxx.xxx.xxx.xxx(client ip) 中看到但没有 x-client-ip 标题。

当我使用:

option forwardfor header X-Client-IP
option http-server-close
Run Code Online (Sandbox Code Playgroud)

在目标服务器上,我看到标头 X-CLIENT-IP=xxx.xxx.xxx(client IP) 但 X-FORWARDED-FOR=xxx.xxx.xxx.xxx(HAProxy ip)

我需要在目标标头上看到 X-CLIENT-IP 和 X-FORWARDED-FOR 具有客户端 IP 的值。

我尝试混合配置,如

 option forwardfor
 option forwardfor header X-Client-IP
 option http-server-close
Run Code Online (Sandbox Code Playgroud)

没有效果。我也不能安装任何模块。目标是IIS。

有任何想法吗?:(

Jak*_*sic 15

您可以尝试设置自定义标题,如下所示:

http-request set-header X-Client-IP %[src]
Run Code Online (Sandbox Code Playgroud)

或者,您甚至可以从 X-Forwarded-For 标头中复制它,我认为语法将类似于:

http-request set-header X-Client-IP req.hdr_ip([X-Forwarded-For])
Run Code Online (Sandbox Code Playgroud)


Gre*_*egL 8

如果您想同时使用两者,则需要使用http-request关键字添加第二个。

# add X-FORWARDED-FOR
option forwardfor
# add X-CLIENT-IP
http-request add-header X-CLIENT-IP %[src]
Run Code Online (Sandbox Code Playgroud)