nginx proxy_buffer导致请求失败
2024-02-28 18:43:07 613
chrome提示net::ERR_INCOMPLETE_CHUNKED_ENCODING
一个接口部署在ecs上, postman访问可以, 前端项目访问失败
请求成功的是没有经过nginx, 失败的是通过nginx转发 /api/xxx
java报错
ClientAbortException: java.io.IOException: Broken pipe
查看nginxerror.log
2024/02/26 11:37:36 [crit] 6577#0: *22572869 open() "/usr/local/nginx/proxy_temp/5/18/0000004185" failed (13: Permission denied) while reading upstream, client: xx.xx.xx.xx, server: , request: "POST /api/xx/xx/xx HTTP/1.1", upstream: "http://xx.xx.xx.xx:xx/xx/xx/xx", host: "xx.xx.xx.xx"
临时修改对应目录的权限, 报错消失
因为nginx配置了proxy_pass
转发api, 而关于proxy缓冲区的配置
https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffers
官方文档介绍很清楚
proxy_buffer_size
配置为 4 KB 或 8 KB。该指令设置用于读取从代理服务器接收到的响应的第一部分
的缓冲区大小proxy_buffers
配置控制为请求分配的缓冲区的大小和数量。增加缓冲区数量可以缓冲更多信息
如果内存无法容纳完整的响应,则可以将一部分保存到磁盘上的临时文件中
但是因为我们请求的响应体过大, 所以超出了内存中的缓存, 按逻辑将要写入磁盘.
但nginx又没有这个目录的权限, 所以导致失败