Из того, что я вижу в коде, это вообще не должно быть возможным (проверьте capture_headers () в proto_http.c). Заголовки обрезаются до запрошенной длины. По этой причине, если вы уверены, что видите такое поведение при запросах одного и того же хоста, проходящих через один и тот же интерфейс, единственная возможность, о которой я могу думать, это то, что у вас иногда есть два поля заголовка, одно с сокращенным значением и еще один с обычным, и этот haproxy регистрирует только первый, а сервер использует последний.
Поскольку они имеют одинаковые отметки времени и тайминги, я предполагаю, что вы не включаете реальные примеры.
Без этих примеров лучшее, что я могу придумать, - это попытаться установить длину эти поля заголовка вручную, например:
capture request header Host len 50
Также обратите внимание, что, поскольку трафик системного журнала является UDP, следует ожидать определенного количества повреждений (хотя это звучит более конкретно). В HAProxy также есть настройка максимальной длины. Я никогда не увеличивал это значение, но если вы хотите попробовать, вот моя переписка с автором HAProxy:
> Can I increase the length of syslog messages sent out by HAProxy? > > Would it be as simple as changing: > #define MAX_SYSLOG_LEN 1024 > In > include/types/log.h > > Or is there more to it than that? You can try, but it may do anything depending on your syslog server. Some accept those messages, some do truncate the lines, YMMV."