HAProxy如何检测url是IP地址而不是域名

HAProxy how to detect url is IP address instead of domain name

如果用户输入 http://ip address,我想重定向到 http://domainnamefrontend 规则是什么?

例如,此规则可以查明 www 是否以域为前缀,如果没有则重定向到 www.domain.com。

http-request redirect code 301 location      \
  http://www.%[hdr(host)]%[capture.req.uri]  \
  unless { hdr_beg(host) -i www }

同样,当用户在浏览器中输入 IP 地址时,我想重定向到 www.domain.com。

user types IP address in browser 开始,这可能有效:

 http-request redirect code 301 location http://www.example.com%[capture.req.uri] if { hdr_reg(host) -i 127.0.0.1|192.168.1.100 }`

但如果用户指定 Host: example.com

则失败

您可以检查主机 header 值,看它是否匹配大致为 IP 地址的正则表达式,例如:

acl ACL_IS_IP hdr(host) -i -m reg (\d+)\.(\d+)\.(\d+)\.(\d+)
http-request redirect code 301 location https://www.example.com/ if ACL_IS_IP