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%,删除一些日志,服务就恢复正常了。

Nginx代理文件_第1张图片
2.png

问题原因

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

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

Nginx代理文件_第2张图片
image.png

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

Nginx代理文件_第3张图片
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

你可能感兴趣的:(Nginx代理文件)