环境:Linux
项目:SpringBoot2.x+nginx
SpringBoot2.x使用的是内置的Tomcat服务器,用户若想通过http://xxx.net/配置名.png
获取图片,那么需要有如下配置:
server:
port: 9999
servlet:
context-path: /restful-client
tomcat:
uri-encoding: UTF-8
static:
pictureLocation: file:/app/share/picture/
@Configuration
public class MvcConfig implements WebMvcConfigurer {
@Value("${server.static.pictureLocation}")
private String pictureLocation;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//将本地资源交由SpringBoot2.x内置tomcat发布
registry.addResourceHandler("/pictureLocation/**").addResourceLocations(pictureLocation);
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}
}
图片位置:file:/app/share/picture/02/yyy.png
请求url:http://xxx.net/restful-client/pictureLocation/02/yyy.png
便可以获取到服务器上的图片。
但是获取图片时,发现大图片只会显示一半,而小图片是可以全部显示的,如图:
问题描述.png
问题原因:
Nginx代理后会有相应的代理缓存区,缓存区大小默认只有几十K,某些版本的nginx默认设置中没有相关处理,导致部分文件代理时会出现加载不全的现象,其实不仅仅是JS文件,只是因为框架的JS文件略大,所以经常出现类似问题。
修改nginx配置
server{
...
//增加/修改下列配置
proxy_buffer_size 128k;
proxy_buffers 32 128k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
}