我正在尝试获取请求者主机/IP,因为它涉及 haproxy 节点。
我的 haproxy 配置如下:
frontend www-http
bind *:9000
http-request redirect location https://%fi:9143
frontend www-https
bind *:9143 ssl crt /root/keys.pem
reqadd X-Forwarded-Proto:\ https
default_backend www-backend
backend www-backend
balance roundrobin
cookie SERVERID insert indirect nocache
server server1 1.1.1.1:9080 cookie server1 weight 1 maxconn 1024 check
所以在这里,如果有任何http请求到来,那么我需要转发到https。
现在请求可能带有完全限定形式的 IP 地址或主机名,例如
http://10.10.10.10:9000
这需要转发到https://10.10.10.10:9143 https://10.10.10.10:9143
同样,请求可能以完全限定的形式出现主机名,例如
http://myhost.domain.com:9000
这需要转发到https://myhost.domain.com:9143 https://myhost.domain.com:9143
基本上 10.10.10.10 和 myhost.domain.com 是同一系统。
现在有了上面的 haproxy 配置,我无法得到下面的内容,因为它是 %fi (frontend_ip),所以它重定向到https://10.10.10.10:9143 https://10.10.10.10:9143
所以我的问题是如何获取 haproxy 节点的 ip/主机。
我尝试了以下选项,但不起作用:
http-request redirect location https://%f:9143
http-request redirect location https://%[req.hdr(Host)]:9143
from https://www.haproxy.com/doc/aloha/7.0/haproxy/log_format_rules.html https://www.haproxy.com/doc/aloha/7.0/haproxy/log_format_rules.html