一、简介
腾讯云‘一键HTTPS’底层使用就是SaaS WAF,所以这里的排查思路是一致的。SaaS WAF可以理解为一个Nginx服务集群,域名接入SaaS WAF并将DNS解析到WAF CNAME后,将隐藏源站,客户端的访问流量会先经过SaaS WAF,由WAF进行对访问流量进行识别、拦截、正常流量转发回源。
二、接入
接入一键HTTPS的话,可以用两种方式进行接入,一种是从SSL证书控制台中添加接入,另一种是从WAF控制台中进行接入防护。
(一)SSL证书控制台接入
由于一键https主要是为了快速部署 HTTPS 功能,实现 HTTP 自动跳转到 HTTPS,所以文档主要是介绍接入,不介绍攻击测试、防止解析绕过等操作。详细参考文档:https://cloud.tencent.com/document/product/400/58062。
(二)WAF控制台接入
接入WAF是为了防护web攻击,所以接入文档除了介绍接入配置外,还会详细介绍测试验证、防止流量绕过WAF等配置操作。详细参考文档:https://cloud.tencent.com/document/product/627/40763。
三、重定向次数过多:
(一)转发与重定向相关概念
我们需要先了解下转发和重定向的区别,便于后续理解‘重定向次数过多’的问题:
1、转发过程:
客户端浏览器发送http请求-->web服务器接收此请求-->调用内部的一个方法在容器内部完成请求处理和转发动作-->将目标资源转发给客户端 (目标服务器对客户端来说是不可见的)
2、重定向过程:
客户端浏览器发送http请求-->web服务器接收后发送30x状态码响应及对应新的location地址-->客户端浏览器接受到30x响应码,则自动再发送一个新的http请求,请求URL是新的location地址-->web服务器根据此请求需找资源并响应给客户端。
注:location地址可以是重定向到任意URL,且是浏览器发送了新的请求,在客户端浏览器地址栏显示的也是其重定向的路径,用户是可以观察到地址的变化的。此过程中,浏览器做了至少两次访问请求。
3、转发和重定向的区别
转发(Forward) | 重定向(Redirect) | |
---|---|---|
跳转方式 | 服务器端 | 客户端 |
客户端发送请求次数 | 1次 | 至少2次 |
客户端地址栏是否改变 | 不变 | 变 |
是否共享request域 | 共享 | 不共享(request域中的数据丢失),必须使用session传递属性 |
是否共享response域 | 共享 | 不共享 |
范围 | 网站内 | 可以跨站点 |
Jsp | URL不可带参数 | URL可带参数 |
是否隐藏跳转后的路径 | 隐藏 | 不隐藏 |
(二)问题排查及解决:
1、问题现象:
www.a.com解析到一键https(waf)的cname,访问http://www.a.com和https://www.a.com时,显示‘该网页无法正常运作、重定向次数过多’,如下图:
2、初步分析
重定向次数过多主要是客户端请求的网页跳转陷入死循环;一般来说,重定向请求次数过多的整个请求响应过程如下:
3、详细排查流程:
排查客户问题过程中,务必尝试复现客户问题,并掌握hosts文件修改,浏览器访问的话,建议是使用无痕模式。
4、部分排查思路:
详细流程参考上一小节,这里介绍其中的部分操作:
(1)客户端的请求是否有经过’一键HTTPS’/waf;
(2)’一键HTTPS’/waf上是否有配置【强制HTTPS】或【HTTPS强制跳转】;
(3)核实源站是否也有配置http强制跳转到HTTPS的功能,例如nginx配置、宝塔等建站工具;nginx配置如下图
如有错误、补充,欢迎指出交流