“只要是莫名其妙的问题,最后都是简单的不能再简单小问题”
下午写了一个新的接口,测试时没有问题,发布到预发布环境之后就出现了莫名其妙的400问题。由于400通常是接口参数错误,所以首先排查客户端参数个数、必填参数、参数名称、返回值等是否与服务端一致;接着排查服务端代码是否正确更新,是否启动,但未能找到结果,于是采用单因子变量实验,这个操作极其耗费时间,大约花费了3个小时仍然没有解决问题。
后来没办法只能启用graphene的开发模式试图通过graphi视图的方式排查,在进行此步骤之前使用AI生成了一个curl 的命令先在服务检查接口是否可访问,没想到接口可以正常返回结果;于是把本地IP端口替换为域名后再次执行curl 的命令却提示请求服务不存在!!
由于服务接口使用了nginx进行代理,二者的区别就在于是否走了nginx代理,因此现在基本可以断定问题问题出在nginx,重启nginx服务之后问题解决!!
其实之前也遇到了类似的问题,多个服务同时重启,nginx反向代理发生混乱,原本指向app.domian.com 的域名却打开了admin的页面。浏览器端多次刷新也无法解决。
为什么通过nginx进行一层代理之后新发布的接口就无法访问呢? 先mark下,等有时间再来解决。欢迎大神留言区赐教!~