nginx导致的返回内容缺少

问题描述:

在个人电脑执行curl后返现接口仅返回部分内容,出参感觉被截取少了一部分;但是在服务所在机器上直接执却发现能返回完整信息

后来就了解到,个人电脑和服务器电脑的差别是是否走了nginx,所以出问题的地方可能是nginx

nginx的错误日志如下:

2024/04/16 11:43:41 [crit] 29434#0: *550562 open() "/opt/nginx/proxy_temp/1/29/0000000291" failed (13: Permission denied) while reading upstream, client: 10.14.168.15, server: 10.14.250.23, request: "GET /api/coursewareInfoByIdCnum?id=93f63bb7ecbc4c498b889fcfa90d7c37&cnum=19 HTTP/1.1", upstream: "http://127.0.0.1:11121/api/coursewareInfoByIdCnum?id=93f63bb7ecbc4c498b889fcfa90d7c37\&cnum=19", host: "10.14.250.23"

然后查看nginx的配置发现,nginx进程对应的用户是普通用户beibo,路径/opt/nginx/proxy_temp是属于root用户的,

执行如下指令,将/opt/nginx/proxy_temp的所有者修改为beibo

sudo chown -R beibo /opt/nginx/proxy_temp

然后重新执行对应的curl,出参完整,解决问题。

原因分析:

nginx存在一个buffer的机制,在返回数据过大超出缓存区的最大容量时,会将数据写入临时文件,而此时如果安装nginx的用户权限对该目录没有权限,就会报没权限的问题,所以在返回数据时,超出缓存区的数据将丢失,出现截断。所以将nginx的目录赋予权限就可以了

参考:

nginx 返回数据被截断_nginx使网参数被自动截断-CSDN博客

https://blog.51cto.com/u_39037/10073798

相关推荐
Shi_haoliu6 小时前
SolidTime 在 Rocky Linux 9.5 上的完整部署流程
linux·运维·nginx·postgresql·vue·php·laravel
zhengxianyi51514 小时前
vue-cli build, vite build 生产部署刷新或弹窗404,页面空白修复方法
前端·javascript·vue.js·nginx·生产部署
zhengxianyi51516 小时前
vite build 发布到nginx二级目录——将yudao-ui-go-view打包、部署到big目录下
vue.js·nginx·vite·前后端分离·打包·ruoyi-vue-pro优化·部署运维
JH307319 小时前
openfeign vs nginx 负载均衡对比
运维·nginx·负载均衡
爱吃山竹的大肚肚19 小时前
Nginx 最核心和常用的命令
java·运维·服务器·前端·nginx
姜太小白20 小时前
【Nginx】鉴权接口通过后,导出或下载接口无响应
运维·网络·nginx
老友@21 小时前
Docker Nginx HTTPS 实战:Let’s Encrypt SSL 证书生成与自动续期
运维·nginx·docker·https·证书·ssl
@22062 天前
银河麒麟系统离线环境下用docke方式部署(Postgres、Nginx、Redis、JDK)
运维·数据库·redis·nginx
戈壁老孙2 天前
使用Nginx实现动态后端服务切换:一套配置管理多环境
运维·nginx
天天天天学习丶2 天前
Nginx 域名解析后默认打开其他项目问题解决方案
nginx