写在前面
最近,一名读者跟我说他通过浏览器访问自己的服务器时,图片显示的非常慢,以至于在浏览器中都无法完全加载出来,下载文件时,更是恼火,文件根本就无法完全下载下来。而且奇怪的是这位读者所在的网络是没啥问题的。于是,我便开始帮他排查各种问题。。。
问题定位
经过一系列的排查(中间过程我就省略了,直接写重点了!),最终定位到是Nginx的问题。当我打开这位读者的网站后台管理系统,发现图片显示非常慢,在Nginx前端代理上查出如下错误信息。
[error] 28423#0: *5 connect() failed (111: Connection refused) while connecting to upstream
直接在后台服务器上用后台服务器的IP地址去访问,发现速度相当快,于是怀疑是Nginx的配置问题。
注意:当下载大的附件,或是页面中有大图片时,就会下载中断或是图片无法显示,也许你会说我用的Nginx缺省的配置也从来没有碰到过这种问题呀!我想说的是:那是因为你的网站没有大文件,至少没有大到使用Nginx的默认配置加载不出来。
这里,我给出一段Nginx的配置,如下所示。
location /file { root /home/file; index index.html index.htm; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080 ; client_max_body_size 100m; client_body_buffer_size 128k; proxy_connect_timeout 600; proxy_read_timeout 600; proxy_send_timeout 600; proxy_buffer_size 32k; proxy_buffers 4 64k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; }
其中几个重要的参数如下所示。
看到这里,发现问题了,这位读者的Nginx有下面一行配置。
proxy_temp_file_write_size 16k;
而他服务器上的图片基本都在100K~5M之间。
问题就出在proxy_temp_file_write_size上,当服务器上的文件超过该参数设置的大小时,Nginx会先将文件写入临时目录(缺省为Nginx安装目下/proxy_temp目录),缺省Nginx是以nobody身份启动的,用ls -al 命令查看proxy_temp目录 nobody是proxy_temp目录的所有者,怪了那为什么没权限呢?接下来查看proxy_temp的父目录既Nginx安装目录。发现nobody竞然没权限,怪不得会出现上面的问题。
解决问题
定位到问题,接下来解决问题就比较简单了。可以使用两种方式解决这个问题,如下所示。
如果是以第一种方式解决问题的话,比如我的proxy_temp目录是/usr/local/nginx/proxy_temp,用如下命令将/usr/local/nginx/proxy_temp目录设置为任何人都可以写,问题解决。
chmod -R 777 /usr/local/nginx/proxy_temp/
如果是使用第二种方式解决问题的话,就可以直接修改nginx.conf文件,如下所示。
location /file { root /home/file; index index.html index.htm; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080 ; client_max_body_size 100m; client_body_buffer_size 256k; proxy_connect_timeout 1200; proxy_read_timeout 1200; proxy_send_timeout 6000; proxy_buffer_size 32k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 10m; }
当然,我也帮这位读者优化了一些其他的配置项。
好了,今天就聊到这儿吧!别忘了点个赞,给个在看和转发,让更多的人看到,一起学习,一起进步!!
以上就是nginx解决图片显示过慢,下载不完全的问题的详细内容,更多关于nginx解决图片显示过慢,下载不完全的资料请关注小牛知识库其它相关文章!
本文向大家介绍Android ImageView 不显示JPEG图片的问题解决,包括了Android ImageView 不显示JPEG图片的问题解决的使用技巧和注意事项,需要的朋友参考一下 Android ImageView 不显示JPEG图片 今天在写一个小实例,ImageView在xml里面设置的是INVISIBLE,在代码里需要设置成setVisibility(View.VISIBLE),
本文向大家介绍Pyecharts地图显示不完成问题解决方案,包括了Pyecharts地图显示不完成问题解决方案的使用技巧和注意事项,需要的朋友参考一下 官网给的解释如下: 自从 0.3.2 开始,为了缩减项目本身的体积以及维持 pyecharts 项目的轻量化运行,pyecharts 将不再自带地图 js 文件。 如用户需要用到地图图表,可自行安装对应的地图文件包。 全球国家地图: echarts
本文向大家介绍解决matplotlib库show()方法不显示图片的问题,包括了解决matplotlib库show()方法不显示图片的问题的使用技巧和注意事项,需要的朋友参考一下 最近使用python里的matplotlib库绘图,想在代码结束时显示图片看看,结果图片一闪而过,附上我原来代码: 我上网查了一下,在遇到show()方法无法显示图片或者图片一闪而过,解决方案分两步: 1.加头文件,完整
本文向大家介绍Android适配利用webview加载后图片显示过大的问题解决,包括了Android适配利用webview加载后图片显示过大的问题解决的使用技巧和注意事项,需要的朋友参考一下 前言 最近在开发过程中,需要用webview控件来展示文章的详情页面,流程是通过请求后台数据,然后用控件加载,而后台返回的文章详情页面是直接网页端使用的,并没有对移动端进行适配,导致webview加载后文章详
第一步: 首先我们要知道gradle从哪里下载,下载什么版本? 方法1:在gradle-wrapper.properties中查看gradle下载地址和版本 本例中,下载地址是:https:\/\/services.gradle.org\/distributions\/gradle-2.10-all.zip ,版本是2.10. 方法2:去查看所有分发的gradle版本地址:https:\/\/se
本文向大家介绍python中ImageTk.PhotoImage()不显示图片却不报错问题解决,包括了python中ImageTk.PhotoImage()不显示图片却不报错问题解决的使用技巧和注意事项,需要的朋友参考一下 发现问题 今天在使用ImageTk.photoImage()显示图片时,当把包含该函数放在自定义函数里时,不能正常显示,移到函数为又可正常显示,所以想到可能是变量不是全局性的缘