ngixn异常 net::ERR_HTTP2_PROTOCOL_ERROR 200

先看页面报错页面报错实例:

再描述下现象:不是一个接口报上面的错误,多个接口多次调用都会偶现上面的问题:net::ERR_HTTP2_PROTOCOL_ERROR 200

所以基本断定不是单个接口 或 数据库的问题,因为我们用了四台nginx做负载均衡和转发,所以基本断定是nginx出了问题,但是是nginx中的哪台机器的什么原因导致的呢?

下面给出2中定位策略:

1)在每次页面有错误的时候,观察http中的header信息,统计每次header中via标签对应的nginx信息。此方法可以得出出问题的nginx。

如下图:ngixn异常 net::ERR_HTTP2_PROTOCOL_ERROR 200_第1张图片

 

2)夜深人静,没有别人调用服务,自己进行调用,分别查看每台nginx服务的日志文件,看出问题的时候哪个机器会有error信息,这里给出我的机器错误日志:

2020/07/13 11:45:52 [error] 20217#0: *85294045 open() "/usr/local/nginx-1.18/html/50x.html" failed (2: No such file or directory), client: 100.97.200.204, server: www.test.com, request: "POST /api/core/scratch/exercise/ HTTP/1.1", host: "www.test.com", referrer: "https://www.test.com/scratch/v3/?token=aee00163e0b79bf004a0001&projectType=1&practiceType=2&lesson=0172cd54dad800163e0b79bf004a0001&class=7712bc6db96f48febccafe008d9869a1&templateId=65032&category=2&role=1&fr=ts&canSave=1&isOnline=0"

此方法可以得出错误的具体原因,我这里看上面的原因就是文件不存在,无法打开文件。

然后与运维沟通发现nginx今天做了升级,但是仅仅reload,没有进行重启,所以缓存的一些信息导致的问题,解决方案就是运维重启下nginx就好了。

这里给一个nginx重启和reload的差别的文章:

https://www.cnblogs.com/fanggege/p/12145956.html

 

你可能感兴趣的:(nginx,nginx)