今天用Zuul写了一个filter进行地址转换,逻辑比较简单,前端请求通过Zuul的filter,把前端的token反解为员工号,加入一些特定的参数后,递交到第三方服务端。大致花了一个小时写了一个filter,本机测试良好,但是放到测试环境测试,服务端返回500,未返回具体的错误message。由于服务端不是我们维护开发的,查看具体500报错信息很难,所以只能进行本地调试。
系统架构:
整个架构很简单,外网请求通过Apache反向代理到内网的Nginx,再请求Zuul,Zuul通过一系列转换后请求第三方系统。本地调试一切正常,但是在模拟环境部署后,发现问题:通过浏览器直接访问Zuul,返回正常;访问Nginx,返回正常;但是访问Apache,返回500。
第一个反应就是找所有请求的差异。从架构和打印的调试信息分析,通过apache访问,请求已经正确到达Zuul应用。所以首先要找出通过nginx正常访问和通过apache不正常访问,在zuul服务器上的差异。
一次GET请求,就包含了请求URL、请求参数和请求头,首先我们在zuul上加个filter,把这些信息打出来。