问题背景:访问HTTP虚拟服务,发现浏览器地址栏里的地址直接跳转到了服务器的真实地址;
问题原因:部分服务器写302跳转代码的时候,写的是绝对路径导致的问题,类似问题建议优先在服务器上通过修改代码解决,如果确实服务器无人维护,可以通过AD进行改写;
配置截图: 1.【应用负载】-【节点池】,编辑节点,然后点击节点进去编辑关联变量,关联变量填写服务器的IP地址+端口: 2.【应用负载】-【策略】-【HTTP改写策略】,新建应答改写,头部名称填写Location,匹配内容为${rs_val}(这个变量的意思就是第一步的节点关联变量),改写内容为虚拟服务IP组+端口(这里要注意下,如果设备是单臂部署的话,改写内容要改写成公网IP+端口,内网访问建议也要直接去访问公网IP+端口): 3.【应用负载】-【策略】-【前置调度策略】,将第二步新建的应答改写关联到前置调度策略 4.【应用负载】-【虚拟服务】,将第三步新建的前置调度策略关联到虚拟服务
扩展:如果出现页面部分加载不全,右键查看属性或者用httpwatch抓取连接发现请求的是服务器的地址+端口,或者主页面加载正确,点击模块跳转到了服务器的地址+端口,这种一般不是通过Location字段返回的302跳转,而是直接写在页面内容里的,这种时候可以再新建一条应答改写如下,动作为改写内容,同样把该应答改写关联到前置调度策略,然后关联到虚拟服务,这条应答改写和第二步的那条不冲突,可以同时关联; |