一、问题描述
前后端服务为 B/S 架构模式,通过Nginx代理转发。同时升级三个 Spring Boot 后端服务。
现象是正常一个Spring Boot项目升级后,后端服务一直在报错 org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
而浏览器页面也在报错提示: 无法加载响应数据:No data found for resource with given identifier
刚开始一直以为是服务升级导致此次错误的主要原因,所以主要精力就放在了查询本次升级服务的问题。报错内容是 java.io异常,所以就看有关io的代码,但是本次修改内容不涉及io的操作。怎么会报java.io异常呢?难道是前辈留的坑?查找了半天也没有找到关于此问题产生的原因。
苦于没有找到问题的原因,索性验证另外两个服务是否有问题,结果居然报同样的问题,这问题就大了,必须得赶快查出问题根源。然后就看了一个没有升级的服务(项目技术栈相同),这一看不要紧,看了真是吓一跳,居然也在报这个错误。这是全线崩溃的节奏啊。出现这个情况,就立即想到不是本次服务升级导致的,于是赶紧找到运维,看看是不是最近改了什么配置。然后就是不出所料,和大多数人一样,没有改啊。我说所有服务现在都处于不可用状态,然后他就不吭声了,默默的改起了nginx配置。
二、问题原因
之前Nginx服务配置的启动用户是 root,但是升级的时候被运维偷偷的改成了 nginx用户了。
三、解决方案
nginx启动用户修改为原来的root即可。如下图所示:
本文完结!