提示
X
本案例来自tskb,请前往tskb修改源内容:立即前往
'>

基础排查:步骤二:关注客户端或浏览器访问报错信息

|

问题描述

步骤二:关注客户端或浏览器访问报错信息

例如浏览器使用IPv6地址访问报错提示
HTTP Error 400,Bad request-Invalid Hostname


根因

服务器有host校验,IPv6地址访问时候,无法识别[240c:4421:4439::1]格式的主机头字段

解决方案

尝试用域名方式进行访问业务,确认是否正常,如果域名访问正常,未有400报错,则代表后端有限制,解决方案如下:
解决方案1:服务器应用配置解决,放通IPv6格式host校验,需要服务器应用开发人员调整。

解决方案2:业务用域名访问,跳开服务器应用层host为IPv6地址的校验。

解决方案3:AD做HTTP改写(仅支持HTTP/HTTPS类型虚拟服务做改写动作),将请求host字段改写为服务器允许的字段。
配置如下:
1、虚拟服务新增前置策略


2、前置策略新增关联请求改写策略,将host字段是IPv6格式的改为IPv4地址或者字符串
\[[ABCDEFabcdef0-9\:]+\]正则匹配所有IPv6地址的host主机头

最后依次提交http改写策略配置,提交前置策略配置,提交虚拟服务配置策略即可



操作影响范围

对当前业务无影响

建议与总结

HTTP改写策略匹配内容和改写内容用法
①使用\[[ABCDEFabcdef0-9\:]+\]正则表达式匹配左右IPv6地址的主机头,也可以使用.+表达式匹配所有字符,这个匹配范围更大,IPv4或者域名都会被匹配改写。
②改写内容为变量${rs_ip}  这个是自动改为调度节点服务器IP地址,节点有多个的时候用变量方式较好,当然也可以手动指定改为域名字符串,例如www.test.com字符,前提是服务器能放通。改写变量内容可以灵活改写,例如服务器有时候校验的是自己的IP地址和端口8080这种,我们可以用两个变量,例如 ${rs_ip}和${rs_port} 两个变量,中间加一个冒号:字符表示节点IP:端口。


我要分享
文档编号: 222067
作者: admin
更新时间: 2023-04-06 10:37
适用版本: