SLB使用HTTP协议Gzip压缩问题解析

SLB使用HTTP协议Gzip压缩问题解析

更新时间:2018-08-08 15:26:45

概述

本文主要概述SLB使用HTTP协议Gzip压缩问题的解析。

问题描述

SLB使用TCP协议,SLB流量很低。切换到七层HTTP后,流量巨增。关闭Gzip开关,或再开启后,流量又下降。

解决方案

Gzip数据压缩支持的类型如下所示。
  1. 在SLB后端RS设置对json格式做gzip压缩,没有生效。做如下测试。
    • 客户端使用不指定HTTP版本,默认为http1.1。
      curl --request POST --url http://xx.xx/ --header 'accept-encoding: deflate,gzip' --header 
      'content-type: text/plain' --data '{"tradeId": "101","cid": "taobaoDirect160323","fromCity":
       "SIN","toCity": "TYO","startDate": "2018-02-07","retDate": "","validTime": "1","flightOption"
      : "oneWay","flightClass": "Economy","adultNumber": "1","childNumber": "0","ds": "ST_F","ipcc
      ":"ST_F","cacheid": "0","guid":"11222","queryhash":"123123123","utour":"utour"}' -o data-6
      
    • 客户端请求指定HTTP版本为1.0。
      curl  --http1.0  --request POST --url http://xx.xx.xx/ --header 'accept-encoding: deflate
      ,gzip' --header 'content-type: text/plain' --data '{"tradeId": "101","cid": "taobaoDirect160323"
      ,"fromCity": "SIN","toCity": "TYO","startDate": "2018-02-07","retDate": "","validTime": "1",
      "flightOption": "oneWay","flightClass": "Economy","adultNumber": "1","childNumber": "0","ds":
       "ST_F","ipcc":"ST_F","cacheid": "0","guid":"11222","queryhash":"123123123","utour":"utour"}'
       -o data-6
      
  2. 由于curl会自动解压缩,抓包结果如下所示。
    • 对于http1.1是可以识别后端nginx设置的gzip的返回压缩文件大小。
    • 对于客户端指定为http1.0版本,没有gzip信息,因此返回的是原大小文件,没有压缩。
  3. 执行过关闭Gzip数据压缩后,SLB有个默认的策略,即会将proxyHttpVersion设置为auto,即由原来支持http1.0的版本,设置为支持http1.1 。对于chunked连接的json文件,http1.1是可以压缩的,只要关闭了gzip后,无论后面是否开启,都设置的是auto,会默认压缩。

适用于

  • 负载均衡SLB