使用 HAProxy 1.5,是否可以添加一个请求标头,其值是绑定使用通配符的前端使用的 IP 地址?
例如,给定以下配置,我可以用某些东西替换“%[fe_id]”以获取用于连接前端的变量 IP 地址?
frontend localhost
bind *:80
bind *:443 ssl crt /etc/ssl/ssl.pem
mode http
default_backend nodes
option forwardfor
backend nodes
mode http
balance roundrobin
http-request add-header X-FrontEnd-IP %[fe_id]
server web00 10.1.10.15:80 check
server web01 10.1.10.16:80 check
server web02 10.1.10.17:80 check
答案1
我搞明白了。不知道我怎么会错过这个,但变量是“dst”。因此,最终的配置将如下所示:
frontend localhost
bind *:80
bind *:443 ssl crt /etc/ssl/ssl.pem
mode http
default_backend nodes
option forwardfor
backend nodes
mode http
balance roundrobin
http-request add-header X-FrontEnd-IP %[dst]
server web00 10.1.10.15:80 check
server web01 10.1.10.16:80 check
server web02 10.1.10.17:80 check
这样,我们就可以知道请求是来自网络内部还是外部,并且 Web 服务器可以相应地进行调整。
此外,要使用 PHP 访问此变量,只需使用带有键“HTTP_X_FRONTEND_IP”的 $_SERVER 数组即可。
$_SERVER['HTTP_X_FRONTEND_IP']