同事在一个新的环境里部署了一套测试环境,因为服务器内存问题等问题,没有采用容器部署,直接进行打包部署的,用nginx做代理完成。
部署完成后,也是遇到一系列的问题,其中Failed to load response data: No data found for resource with given identifier 这个问题在平台里导出都有报,但是一直没有找到问题根源,这个问题导致平台中许多节点都不能正常访问,登陆跳转等等都有问题。
我在网上找了好久,大多都说的是跨域问题,但是看了nginx的配置文件,已经有相关的配置了。还有说是链接时间的问题,但是keepalive_timeout设定的时间已经足够长了。。。。。。就这样,一直没发现问题的根源。
终于,功夫不负有心人,在我百思不得其解的时候,突然看到网上有人说可能是接口返回的json不完整(参考:failed to load response data: No data found for resource with given identifier_开水没有春天的博客-CSDN博客),于是我用postman调用线上报这个错的接口来测试,发现返回的json信息确实被截断了,终于找到问题的根源了,如饮甘霖呀!
根本原因是返回的json信息太大,nginx默认的缓冲区不足以支撑,导致nginx把返回的信息截断了,需要设置缓冲区的大小来解决这个问题,在location中添加
fastcgi_buffers 256 128k;
chunked_transfer_encoding off;
location / {
root /appdata/hfmp/dist;
index index.html index.htm;
fastcgi_buffers 256 128k;
chunked_transfer_encoding off;
}
添加完成之后,在sbin文件下重启nginx:./nginx -s reload
重启之后,发现还是没有变化,问题依旧存在,于是查看nginx的错误日志
可以看出,是因为没有对proxy文件夹下所有文件以及文件夹赋的读写权限,可以使用命令进行赋权限:
chmod -777 -R proxy
权限修改完后,再次重启nginx,问题解决!