记一次,页面报 Network Error 错

在对项目进行多租户改造的过程中,遇到了一些坑,特此记录一下,希望有给遇到类似坑的小伙伴一些帮助

记一次,页面报 Network Error 错

现象:

1、当进行页面操作的时候,会时不时的报 Network Error 的错误。

2、对大部分的接口调用和页面控制台操作基本不受影响

3、录像上传总是失败

历程:

1、前端人员进行了跨域定位,没有找到原因

2、客户端和后端人员也对录像上传会中断问题进行了好几天的排查,前期主要精力放在了 websocket 连接上,毕竟这是最容易怀疑的地方,但依旧无果

最终结果:

经多次观察,同事发现 nginx 的进程号,总是莫名奇妙的变换。于是初步设想,可能是 nginx 频繁自我重启导致,可是为什么会重启呢?

记一次,页面报 Network Error 错

这边首先怀疑的是配置文件,用 nginx -t 命令可以查看配置文件是否正确,但是配置文件启动是没问题的,于是没有办法,只能对比 GIT 历史中的 nginx 配置文件提交记录

问题原因:

最终定位到了是一段上传录像的配置导致的:

记一次,页面报 Network Error 错

这边为了适配多租户的属性,在上传组件中 location 指定路由规则时,放上了动态路径 /isapi/(.*)/sessionUpload,在里面的 upload_pass 回调地址同样采用了动态配置 /isapi/$1/res_upload。这里才是造成 nginx 不停启动的原因,目前具体原理尚不清楚,欢迎有了解的小伙伴解惑一下。

记一次,页面报 Network Error 错

这里后端代码,是没有加入参 file_tenant_name 的。租户号是从网关转发的(想要了解的小伙伴可以看我另外的文章)

解决方法:

记一次,页面报 Network Error 错

这里对 upload_pass 的动态路由进行了改造,把租户变量封装到上传表单 form 变量中
记一次,页面报 Network Error 错

后端代码对入参进行判别,此处不再使用动态 $1 变量路由的方式