HAProxy поддерживает директиву конфигурации прокси, называемую option accept-invalid-http-request
.
Он решает некоторые из строгого соблюдения протокола, что HAProxy правильно требует по умолчанию для входящих запросов, поэтому его нельзя использовать вслепую или небрежно, не понимая последствий.
Из документации:
По умолчанию HAProxy соответствует RFC7230 с точки зрения анализа сообщений. Это означает, что недопустимые символы в именах заголовков не разрешены и вызывают ошибку для возврата клиенту. Это желаемое поведение, так как такие запрещенные символы используются в основном для создания атак с использованием слабых сторон сервера и для защиты от обхода защиты.
Иногда багги-браузер или сервер будут вызывать недопустимые имена заголовков по любой причине (конфигурация, реализация), и проблема не будет немедленно исправлена. В таком случае можно разделить парсер заголовка заголовка HAProxy, чтобы принять любой символ, даже если это не имеет смысла, указав эту опцию.
Аналогичным образом список символов, разрешенных для отображения в URI, хорошо определен RFC3986, а символы 0-31, 32 (пробел), 34 ('' '), 60 (' < '), 62 (' > '), 92 (' \ '), 94 ('^'), 96 (' `'), 123 (' {'), 124 (' | '), 125 ('} '), 127 (delete) и что-либо выше не разрешено вообще. Haproxy всегда блокирует несколько из них (0..32, 127). Остальные блокируются по умолчанию, если эта опция не включена. Этот параметр также расслабляет тест в версии HTTP, он позволяет пропускать запросы HTTP/0.9 (не указанная версия) и несколько цифр как для основной, так и для младшей версии.
Этот параметр никогда не должен включаться по умолчанию, поскольку он скрывает ошибки приложений и открывает нарушения безопасности. только быть после того, как проблема была подтверждена.
http://cbonte.github.io/haproxy-dconv/1.6/configuration.html#4-option%20accept-invalid-http-request (курсив)
Добавление этой опции в соответствующей frontend
части файла configurarion должны допустить, чтобы эти некорректные заголовки должны быть приняты.
Обратите внимание, что потенциальные риски безопасности, упомянутые в документации, не являются рисками, присущими HAProxy, а скорее опасны для использования уязвимостей в вашем стеке за прокси-сервером - поскольку обычно HAProxy защищает эти компоненты от таких недействительных запросов.
Вы на 100% уверены, что заблокированные заголовки - это «двоеточие», а не «пробел-двоеточие»? – regilero
Пространство после двоеточия не является недопустимым в HTTP и не будет заблокировано HAProxy. Здесь что-то еще происходит. Взгляните на свои журналы. Найдите значение для состояния завершения - '% tsc', если вы используете собственный формат журнала. При успешных запросах это будет регистрироваться как '----'. Для неудавшихся запросов первые два символа (по крайней мере) будут разными, и это очень полезная информация. Что вы здесь видите? Вы захватили трассировку пакетов? У вас есть какие-либо 'req [i] rep' правила? Если да, пожалуйста, покажите их - вы можете нарушать запросы с помощью плохого регулярного выражения. –
@regilero: ya вы правы .. обновили вопрос. – pratikvasa