proxy_next_stream 的学习
背景
一个项目出现了程序异常的情况.
具体表现为, 总是会前端爆出. opcache 不存在的问题.
很奇怪的是业务开发说这个错误是不应该出现的
并且只有在负载的情况下才有问题.
公司里面负载的环境很多. 但是从来没出现过类似的问题.
我这边拿过现场的nginx配置文件进行过处理没有问题.
但是突然公司同事发现有nginx 日志出现 错误日志 两次
到upstream的情况.
所以想多学习与了解一下
问题的发现
问题其实出现了很久的时间.
因为自己使用nginx其实不是很深入.
没有发现雪冰老师发现的 proxy_next_stream 的参数设置
当然因为是移动运营商给提供的nginx, 我这边并不是很清楚
到底是使用的next_stream 还是其他的lua脚本来实现的.
只能找具体的云服务提供商来进行相关的处理.
参数说明:
proxy_next_upstream error | timeout | invalid_header | http_500
| http_502 | http_503 | http_504 | http_403
| http_404 | http_429 | non_idempotent | off ...;
Default: proxy_next_upstream error timeout;
Context: http, server, location
指定应将请求传递到下一个服务器的情况:
error # 与服务器建立连接,向其传递请求或读取响应头时发生错误;
timeout # 在与服务器建立连接,向其传递请求或读取响应头时发生超时;
invalid_header # 服务器返回空的或无效的响应;
http_500 # 服务器返回代码为500的响应;
http_502 # 服务器返回代码为502的响应;
http_503 # 服务器返回代码为503的响应;
http_504 # 服务器返回代码504的响应;
http_403 # 服务器返回代码为403的响应;
http_404 # 服务器返回代码为404的响应;
http_429 # 服务器返回代码为429的响应(1.11.13);
non_idempotent # 通常,请求与 非幂等 方法(POST,LOCK,PATCH)
不传递到请求是否已被发送到上游服务器(1.9.13)的下一个服务器;
启用此选项显式允许重试此类请求;
off # 禁用将请求传递给下一个服务器。
关于思路
cat nginx.conf |grep "02/Apr/2024:09:04" >1.txt
cat 1.txt |grep "" 500" 查看500 情况的日志.
发现有5个get 1个put 进行了 多个后端地址的处理.
PUT HTTP/1.1" 500 242 -"10.xx.xxx.5:5200, 10.xx.xxx.2:5200"
因为 PUT是非幂等的 会导致两个异常提示信息不一致.
关于解决问题的思路
1. 必须找云服务提供商进行解决.
2. 不明确增加
proxy_next_upstream off ;
能否带来收益.
应该可以进行一下相关的测试工作.
标签:http,stream,next,响应,服务器返回,500,proxy
From: https://www.cnblogs.com/jinanxiaolaohu/p/18110718