Мы запускаем веб-службу и случайно попадаем на 502 Bad Gateway. О 502 сообщает обратный прокси (Apache 2.4.x) во время разговора с внутренним сервером (Apache 2.4.x). Проблема случайным образом повторяется примерно один раз на 100 000 обслуженных запросов, поэтому ее действительно сложно воспроизвести. Я вижу, что Apache позволяет настраивать ProxyBadHeader
директива, где возможные варианты IsError|Ignore|StartBody
. У меня проблемы с поиском точной причины ошибки. Я знаю, что если я установлю ProxyBadHeader
к StartBody
частичный вывод попадет в браузер. Я действительно не хотел бы передавать данные неизвестному конечному пользователю, поэтому мне нужно что-то получше. Можно ли записать в журнал все частично полученные данные с плохого шлюза?
Проблема похожа на Ошибка Apache 37770 но это должно быть исправлено в текущей версии.
По моему опыту, вы правильно указали на Ошибка Apache 37770, который в функции обратного прокси-сервера Apache. Если вы изучите патчи, процитированные там с 2008 по 2016 год, вы сами убедитесь, что это действительно обходные пути. Если основная причина исчезла в httpd-2.4, то это не очевидно ни из разговора там, ни из наблюдаемого поведения httpd.
Либо
SetEnv proxy-initial-not-pooled 1 # prevent a small percentage of 502 errors, comes with a performance penalty
или согласитесь, что небольшой процент запросов получает 502. Или перейти на haproxy.
я угадать что если вы соберете беседу серверной части, вы увидите, что она не видит HTTP GET. Это было результатом моего небольшого исследования, и я пришел к выводу, что соединение каким-то образом теряется внутри кода обратного прокси (возможно, когда внутреннее соединение берется из пула или возвращается туда).