Nginx在上游响应日志中显示2种不同的状态

时间:2019-09-26 07:33:22

标签: nginx kubernetes nginx-ingress nginx-log

我正在kubernetes集群中运行一个nginx-ingress控制器,并且我的请求的日志语句之一如下:

upstream_response_length: 0, 840
upstream_response_time: 60.000, 0.760
upstream_status: 504, 200

我不太明白这是什么意思? Nginx的响应超时等于60秒,并尝试在此之后再请求一个时间(成功)并记录两个请求?

P.S。配置日志格式:

log-format-upstream: >-
      {
      ...
      "upstream_status": "$upstream_status",
      "upstream_response_length": "$upstream_response_length",
      "upstream_response_time": "$upstream_response_time",
      ...
      }

1 个答案:

答案 0 :(得分:2)

根据split_upstream_varingress-nginx方法,它是splits nginx health checks的结果。

由于nginx可以包含several upstreams,因此您的日志可以这样解释:

  1. 第一个上游已死(504)
upstream_response_length: 0 // responce from dead upstream has zero length
upstream_response_time: 60.000 // nginx dropped connection after 60sec
upstream_status: 504 // responce code, upstream doesn't answer
  1. 第二部上游作品(200)
upstream_response_length: 840 // healthy upstream returned 840b 
upstream_response_time: 0.760 // healthy upstream responced in 0.760
upstream_status: 200 // responce code, upstream is ok

P.S。 JFYI,这是一个很酷的HTTP标头状态图

Http-headers-status

相关问题