Nginx线上请求故障分析
点关注不迷路,欢迎再访!
精简博客内容,尽量已行业术语来分享。
努力做到对每一位认可自己的读者负责。
帮助别人的同时更是丰富自己的良机。
一.配置参数
配置参数:
1)配置请求体缓存区大小
client_body_buffer_size 10m;
2)配置客户端上传限制最大值
client_max_body_size 20m;
3)配置客户端下载限制最大值
proxy_max_temp_file_size 5000m;
4)设置临时文件存放路径(可选配置)
client_body_temp_path /data/temp;
ps:设置临时文件存放路径。只有当上传的请求体超出缓存区大小时,才会写到临时文件中,注意临时路径要有写入权限
配置设置:
1)在http{ }中设置:client_max_body_size 20m;
2)选择在server{ }中设置:client_max_body_size 20m;
3)选择在location{ }中设置:client_max_body_size 20m;
区别:http{} 中控制着所有nginx收到的请求;而报文大小限制设置在server{}中,则控制该 server收到的请求报文大小,同理,如果配置在location中,则报文大小限制,只对匹 配了location 路由规则的请求生效。
二.工作问题案例分析
在前端发起一个post请求,当body数据量较多时发现请求失败,后端无法获取请求流量日志,F12监控请求发现head请求异常,错误如下:
<body>
<h1>An error occurred.</h1>
<p>Sorry, the page you are looking for is currently unavailable.<br/>Please try again later.</p >
<p>If you are the system administrator of this resource then you should check the error log for details.</p >
<p><em>Faithfully yours, nginx.</em></p >
</body>
通过日志分析可以看出是请求中间层nginx异常导致请求失败,查看nginx日志发现请求失败,失败原因请求body超出缓存区大小,没有写入临时文件权限导致异常;
三.解决方案
开启临时路径文件写入权限即可