Nginx代理文件

背景

前天(8月13日)CAC在beta环境服务打不开,控制台报错是有两个js文件报script error,但这两个js文件是返回200 ok的。requirejs对script error的描述是js文件在运行时可能有javascript语法错误,或者其他执行问题。通过单步调试,找到报错点:Net::ERR_INCOMPLETE_CHUNKED_ENCODING。该错误可能是nginx配置问题。查找nginx的错误日志,搜索fail关键字找到:

1.png

可看到No space left on device报错,大致猜测可能是磁盘空间不足。查看磁盘空间,果然/opt目录的空间使用率已达100%,删除一些日志,服务就恢复正常了。

2.png

问题原因

当代理文件大小超过配置的proxy_temp_file_write_size时,nginx会将文件写入临时文件目录(proxy_temp),当磁盘空间不足时无法写入文件即会报错。

8月23日CAD研发生产环境发生同样的错误,页面打不开,控制台报错如下:

image.png

看到熟悉的ERR_INCOMPLETE_CHUNKED_ENCODING错误,熟悉的js文件加载错误。查看CAD的磁盘空间后果然又是磁盘空间爆了:

image.png

那么问题来了,nginx的临时文件配置到底有什么用?客户端发起获取js文件请求的时候,nginx到底对这些文件做了什么?

参考文章
记一次异常:Failed to load resource: net::ERR_INCOMPLETE_CHUNKED_ENCODING
https://yq.aliyun.com/articles/248416
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffers
https://www.cnblogs.com/me115/p/5698787.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容