背景分析
随着互联网基础设施建设的发展,4G/5G/NB-IoT各种网络技术的大规模商用,视频随时随地可看、可控的诉求越来越多,互联网思维、架构和技术引入进传统监控行业里,成为新形势下全终端监控的基础需求。
因使用区域受限、实施成本和入口门槛高,传统监控行业和摄像机直播系统无法借力优质云资源搭建属于自己的监控云平台,客户终端出不了监控的内网,无法做到公网实时监控与录像回放,更别说用手机、微信、H5、无插件随时随地看视频了,EasyNVR已经可以很好的解决以上痛点。
接触到EasyNVR产品的开发者都知道,EasyNVR是一套功能齐全、简洁易用的流媒体解决方案,可作为能力层前端接入摄像头,后端接入业务系统使用,也可以作为应用层,直接修改为属于企业用户自己的视频管理平台。
EasyNVR的配置页面数据空白
发现问题
一般来说,我们团队都会定期对EasyNVR进行新版本的研发和测试,不断完善,丰富功能。但是在最近的测试中,我们发现了一个问题:我们在linux系统中部署了一台EasyNVR,部署之后,运行起来却发现配置页面的数据出不来。
分析问题
基于是web页面出现的问题,开发人员第一反应一定是调出管理员的开发工具查看一下接口请求情况、是否有数据返回。但当开发者们调出这个界面,却发现“headers”状态一切都是正常的,但是我们的“response”的数据确实显示空白。这说明我们的接口请求没有问题,问题可能出现在其他方面。
紧接着我们的研发人员通过查看控制台来排查问题。此时控制台显示ERR_CONTENT_LENGTH_MISMATCH
原来是nginx的工作进程对大文件做了缓存,这个缓存在 %nginx%/proxy_temp 目录下,主进程在读取缓存的时候由于权限问题而无法访问。EasyNVR确实是使用nginx作为方向代理的,这个问题实际上就是linux下的文件权限的问题。
问题解决
linux比较注重文件的权限,于是我们给“/proxy_temp 目录”赋予相应的权限,将缓存的目录权限修改成对应权限。
修改对应权限过后,问题便得到了解决。