Должен ли балансировщик нагрузки HTTP перенаправлять неверные запросы на серверную часть?

Если HTTP-клиент отправляет запрос GET с телом, которое сгенерирует ответ 400 Bad Request, должен ли балансировщик нагрузки перенаправить этот запрос на серверную часть или немедленно обработать его? Есть ли какое-либо преимущество в том, чтобы НЕ иметь дело с этим на уровне балансировки нагрузки?

Недавно команда приложения пожаловалась, что балансировщик нагрузки возвращает 400 Bad Request, тогда как само приложение возвращает 405 Method Not Allowed. Казалось, что балансировщик нагрузки был прав, а у команды приложения возникло недопонимание, но это заставило меня задуматься, когда же балансировщик нагрузки должен быть более снисходительным и в любом случае пересылать дерьмо бэкэндам.

балансировка нагрузки обратного прокси http прозрачный прокси

1 ответ
1

Почему не оба? HTTP-запрос может быть неправильно сформирован, а глагол не поддерживается в этом контексте. 400 легче проверить с помощью парсера, поэтому балансировщик нагрузки может отклонить несоответствующие заголовки, не зная, что на самом деле означает запрос.

Применяется глубокоэшелонированная защита. Плохой, возможно злонамеренный, запрос, отклоненный внешним интерфейсом, никогда не должен быть виден серверной части. Возможно, остановить атаку, которую бэкэнд не мог бы сделать сам по себе.

haproxy, например, считает, что их option accept-invalid-http-request и option accept-invalid-http-response следует оставить отключенным. То есть соответствует стандартам. Конечно, несмотря на то, что haproxy настраивается, его можно настроить в расслабленном режиме для работы со сломанными вещами.

Джон Маховальд

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *