今天给广告部门做一个代理层接口,目的是为了记录第三方接口请求日志,由于第三方与我们以及百度统计到的数据都不同,因此需要通过增加代理层验证准确性。
思路必然是通过某台服务器,然后记录日志,怎样做比较简单呢?
- 部署到pc播放页服务器上,直接通过nginx代理转发,发现有问题,第三方接口是https,而代理转发不支持https的转发
- nginx rewrite,也不行,请求得到结果会出现302状态码,这个不是我们想要的
- 只能通过node做一个逻辑处理了,我们在node里边增加了https发送模块,将返回的结果通过console.info记录在日志里边
- 部署上线的时候pc发现新问题,pc会走cdn缓存,这样很多请求打不到我们的服务器上,也就无法记录日志
- 放在M站服务器上,由于M站没有走cdn所以这里可以直接配置修改。
- 修改M站的时候我们发现一级uri会有问题,因为M站会把一级uri作为频道页重写
- 最终接口请求为**.**.com/proxy/ad
- 好了 下边就是收集日志分析日志的工作了
然后问题基本结束了,但是下午沟通发现又有新问题了,代理转发的第三方接口并不是固定的,之前讨论是固定的是把问题简单化了,为了避免麻烦,我们重新做了处理
- 支持通过send参数将第三方接口传递给我们代理层
- 传递给代理层以后,要判断第三方请求是http还是https,决定下一步的请求方式
- 同时需要把header原样带给第三方接口,这里有个小插曲,代理接口header里边的host要删掉后才能再传给第三方接口才不会报错,理由很简单,那个host是代理的host,而第三方不需要也不识别。
最后就上线了……