code: function setRequest(ctx, path, config) {
      config = config || {};
  
      let headers = ctx.headers || {};
      let query = config.query || ctx.query;
  
      // 获取实际要请求的method和url:
      //  首先通过analyUrl方法将 github:post:/test/test 转换成真正的URL，
      //  然后通过addQuery方法将 当前页面中的query 添加到URL中
      //  最后通过getUri方法 分析URL 的真实URI和HOST
      let urlObj = analyUrl(ctx, path);
      let url = addQuery(urlObj.url, query);
      let uriObj = getUri(url);
  
      // 复制一份头信息
      let result = Object.assign({}, headers);
  
      // 配置host，先把当前用户host存入user-host,然后把请求host赋值给headers
      result['user-host'] = result.host;
      result.host = uriObj.host;
  
      // 由于字段参数发生改变，content-length不再可信删除content-length字段
      delete result['content-length'];
  
      // 干掉请求中的if-modified-since字段，以防命中服务端缓存，返回304
      delete result['if-modified-since'];
  
      // 如果用户请求为POST，但proxy为GET，则删除头信息中不必要的字段
      if (ctx.method == 'POST' && urlObj.method == 'GET') {
        delete result['content-type'];
      }
  
      return {
        method: urlObj.method,
        uri: uriObj.uri,
        headers: result
      }
    }
docs: 根据分析proxy url的结果和当前的req来分析最终的url/method/头信息
  @param {Object} ctx koa上下文
  @param {Object} path 请求路径
  @param {Object} config proxy配置