http2.0反向代理遇到的坑

  

使用域名指向nginx服务来代理https, nginx可以通过分析clienthello中的server_name字段得到访问域名,然后通过解析域名地址来进行代理。
 http2.0反向代理遇到的坑

  

这里有几个问题,第一个是低版本的ie浏览器,使用的是低版本的tls,没有这个字段,无法得到域名,不过现在使用低版本ie的越来越少了,可以忽略。
第二个是苹果的某些系统应用,填写的域名不是真正的域名,不过有迹可循,可以通过字符串修改为真正的域名,进行代理。

  

最近测试京东的时候发现访问京东二级域名的时候偶尔会返回200年,偶尔会301年一个异常页面。
 http2.0反向代理遇到的坑”> <br/>而如果新开浏览器打开二级页面,就没有这种问题。<br/>偶尔发现如果不使用域名直接代理,而是使用浏览器代理设置,访问一切正常,非常奇怪。<br/>通过对比发现,使用域名代理时使用的是http2.0,而设置浏览器代理时使用的是HTTP1.1,于是在浏览器禁止http2.0(火狐设置:配置network.http.spdy.enabled。http2为假/gg浏览器没找到怎么设置),访问京东一切正常。<br/>客户端在请求的时候会携带自己支持的http类型<br/> <img src=http2.0反向代理遇到的坑