问题场景:vux项目打包的js发布到服务器上报错,然后把打包好的js放到七牛云服务器上,再在html页面引用这个js就没问题,服务器之前是好用的,不知道现在为什么不行了,所以我在想:是不是因为跟nginx压缩有关,然后在网上找资料,终于找到解决办法了!

问题场景

Nginx+Tomcat搭建,且cms由Nginx进行代理转发。如常见的8080端口转到80,或者其他服务器的80或8080端口等情况。之后通过80端口访问cms的时候发现前端以及后台很多的js加载一半,出现如图错误:直接访问相关js也发现内容确实只加载了一半,强制刷新无用,依然只有一半。但是直接访问tomcat的80或者8080端口发现是没有问题的。

问题原因
Nginx代理之后会有相应的代理缓存区,缓存区默认只有几十K,某些版本的nginx默认设置中没有相关处理,导致部分文件代理是会出现加载不全的现象,其实不仅仅是JS文件。只是因为框架的JS文件略大,所以经常出现类似问题。

问题解决
在Nginx.conf中添加

proxy_buffer_size 128k;
proxy_buffers   32 128k;
proxy_busy_buffers_size 128k;

如:

clipboard.png

参考:

1、Nginx+Tomcat代理环境下JS无法完全加载问题的处理
2、Nginx proxy buffer相关的设置和解释
3、proxy_buffers
4、Nginx的gzip配置参数说明


Awbeci
3.1k 声望212 粉丝

Awbeci