HAProxy如何检测url是IP地址而不是域名
HAProxy how to detect url is IP address instead of domain name
如果用户输入 http://ip address
,我想重定向到 http://domainname
。 frontend
规则是什么?
例如,此规则可以查明 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
如果用户输入 http://ip address
,我想重定向到 http://domainname
。 frontend
规则是什么?
例如,此规则可以查明 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