外部网友访问论坛时,所有图片都不显示,提示错误:
[code=CACHE_FILL_OPEN_FILE] An internal error prevented the object from being sent to the client and cached. Try again later.
该网友是集团局域网代理上网,访问其他网站都能够正常,只是我们站图片有问题
公司有一批旧图片是放到windows服务器的
windows服务器上的图片都能够正常访问
最近在做虚拟化,可能是虚拟机的问题?
分别访问虚拟机和物理机上的图片链接,都不行
可以排除这个问题
windows服务器直接用apache提供服务,linux用nginx
那可能是配置的问题
拿一台测试服务器,把线上的nginx配置逐步测试
nginx的基本配置
client_max_body_size 500m;
client_header_buffer_size 256k;
sendfile on;
keepalive_timeout 65;
网友访问正常
加上压缩的配置
gzip on;
gzip_buffers 4 16k;
gzip_comp_level 9;
gzip_min_length 1k;
gzip_proxied any;
gzip_types text/plain application/x-javascript js gzjs text/css text/javascript p_w_picpath/jpeg p_w_picpath/gif p_w_picpath/png;
网友访问出错,提示
[code=CACHE_FILL_OPEN_FILE] An internal error prevented the object from being sent to the client and cached. Try again later.
把上面代理的配置去掉,加上
sendfile on;
keepalive_timeout 300;
fastcgi_buffers 8 256k;
fastcgi_buffer_size 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
访问也正常
因为该网友是内部代理上网,那可能是压缩的代理问题
注释#gzip_proxied any;
重启nginx,访问能够正常
再把线上所有#gzip_proxied any;的配置都注释掉,OK,能够正常访问论坛了
晕,就是这个问题
查看nginx wiki
gzip_proxied:
- off - disables compression for all proxied requests
- expired - enables compression, if the "Expires" header prevents caching
- no-cache - enables compression if "Cache-Control" header is set to "no-cache"
- no-store - enables compression if "Cache-Control" header is set to "no-store"
- private - enables compression if "Cache-Control" header is set to "private"
- no_last_modified - enables compression if "Last-Modified" isn't set
- no_etag - enables compression if there is no "ETag" header
- auth - enables compression if there is an "Authorization" header
- any - enables compression for all requests
gzip_proxied any;
一直理解的,应该是“所有的请求都进行压缩”,怎么到了这里,代理的请求被禁止了呢?
真心不明白,难道是nginx的一个bug?
纪录一下
转载于:https://blog.51cto.com/lynnteng0/1125375