Nginx показывает 2 разных статуса в журнале ответов - PullRequest
1 голос
/ 26 сентября 2019

Я запускаю контроллер nginx-ingress в кластере kubernetes, и один из моих операторов журнала для запроса выглядит так:

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

Я не совсем понимаю, что это значит?Nginx имеет время ожидания ответа, равное 60 секундам, и пытается запросить еще один раз после этого (успешно) и регистрирует оба запроса?

PS Конфигурация для формата журнала:

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

1 Ответ

2 голосов
/ 26 сентября 2019

В соответствии с split_upstream_var методом ingress-nginx , оно разбивает результаты nginx проверок состояния .

Поскольку nginx может иметь несколько восходящих потоков , ваш журнал можно интерпретировать следующим образом:

  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
Второй восходящий поток работ (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

PS JFYI, вот классная диаграмма состояний HTTP-заголовков

Http-headers-status

...