Устранение распространенных неполадок маршрутизации

В этой статье объясняется, как устранить некоторые распространенные проблемы маршрутизации, которые могут возникнуть при использовании конфигурации Azure Front Door.

Azure Front Door возвращает ответ с кодом 503 через несколько секунд

Симптом

  • Обычные запросы, отправляемые на внутренний сервер и не проходящие через Azure Front Door, выполняются успешно. При отправке запросов через Azure Front Door возвращается ошибка 503.
  • Сообщение о сбое Azure Front Door, как правило, отображается примерно через 30 секунд.

Причина

У этой проблемы может быть две причины:

  • Для получения запроса от Azure Front Door внутреннему серверу требуется больше времени, чем задано в настройках времени ожидания (по умолчанию 30 секунд).
  • Время, необходимое для отправки ответа на запрос от Azure Front Door, превышает время ожидания.

Действия по устранению неполадок

  • Отправьте запрос непосредственно на внутренний сервер (не через Azure Front Door). Определите, через какое время внутренний сервер обычно возвращает ответ.
  • Отправьте запрос через Azure Front Door и посмотрите, будут ли возвращаться ответы с кодом 503. Если нет, то проблема, возможно, не связана с временем ожидания. Обратитесь в службу поддержки.
  • Если при отправке запросов через Azure Front Door возвращается ошибка 503, настройте параметр sendReceiveTimeout для Azure Front Door. Заданное по умолчанию время ожидания можно увеличить до 4 минут (240 секунд). Этот параметр находится в разделе backendPoolSettings и называется sendRecvTimeoutSeconds.

В ответ на запросы, отправленные в пользовательский домен, возвращается код состояния 400

Симптом

  • Вы создали экземпляр Azure Front Door, но в ответ на запрос к домену или интерфейсному узлу возвращается код состояния HTTP 400.
  • Вы создали сопоставление DNS пользовательского домена с настроенным интерфейсным узлом. Однако при отправке запроса на имя узла пользовательского домена возвращается код состояния HTTP 400. Запрос не направляется на настроенный внутренний сервер.

Причина

Эта проблема возникает, если не настроено правило маршрутизации для пользовательского домена, добавленного в качестве интерфейсного узла. Для этого интерфейсного узла необходимо явно добавить правило маршрутизации. Это условие действует даже в том случае, если правило маршрутизации уже настроено для интерфейсного узла в поддомене Azure Front Door (*.azurefd.net).

Действия по устранению неполадок

Добавьте правило маршрутизации для пользовательского домена, чтобы направить трафик в выбранный серверный пул.

Azure Front Door не перенаправляет HTTP на HTTPS

Симптом

В Azure Front Door есть правило маршрутизации, которое перенаправляет HTTP на HTTPS, но доступ к домену по-прежнему осуществляется по протоколу HTTP.

Причина

Это может произойти, если неправильно настроены правила маршрутизации для Azure Front Door. Это означает, что текущая конфигурация неспецифична и может содержать конфликтующие правила.

Действия по устранению неполадок

В ответ на запрос на имя интерфейсного узла возвращается код состояния 404

Симптом

Вы создали экземпляр Azure Front Door, настроив интерфейсный узел, серверный пул как минимум с одним сервером и правило маршрутизации, которое регулирует подключение интерфейсного узла к серверному пулу. Содержимое недоступно при отправке запроса к настроенному интерфейсному узлу. В результате возвращается код состояния HTTP 404.

Причина

Данный симптом мог возникнуть по нескольким причинам.

  • Внутренний сервер не является общедоступным и невидим для Azure Front Door.
  • Внутренний сервер настроен неправильно, поэтому Azure Front Door отправляет неправильный запрос. Другими словами, внутренний сервер принимает только протокол HTTP, но протокол HTTPS не запрещен. В результате Azure Front Door пытается перенаправить HTTPS-запросы.
  • Внутренний сервер отклоняет заголовок узла, который был переслан вместе с запросом на внутренний сервер.
  • Конфигурация внутреннего сервера развернута не полностью.

Действия по устранению неполадок

  • Проверьте время развертывания:

    • Убедитесь, что прошло не менее 10 минут, необходимых для развертывания конфигурации.
  • Проверьте параметры внутреннего сервера:

    • Перейдите к серверному пулу, к которому должен направляться запрос. (Это зависит от настройки правила маршрутизации.) Убедитесь, что тип внутреннего узла и имя внутреннего узла указаны правильно. Если внутренний сервер является пользовательским узлом, убедитесь, что его имя указано правильно.

    • Проверьте порты HTTP и HTTPS. В большинстве случаев порты 80 и 443 (соответственно) указаны правильно, и изменения не требуются. Тем не менее существует вероятность того, что внутренний сервер настроен иначе и ожидает передачи данных через другой порт.

    • Проверьте заголовок внутреннего узла, настроенный для серверов, на которые должен перенаправляться трафик интерфейсного узла. В большинстве случаев этот заголовок должен совпадать с именем внутреннего узла. Тем не менее неправильное значение может привести к отображению различных кодов состояния HTTP 4xx, если внутренний сервер ожидает другое значение. Если указан IP-адрес внутреннего сервера, может потребоваться задать имя внутреннего узла в качестве заголовка внутреннего узла.

  • Проверьте параметры правила маршрутизации:

    • Перейдите к правилу маршрутизации, которое должно направлять трафик указанного интерфейсного узла в серверный пул. Убедитесь, что допустимые протоколы переадресации запросов настроены правильно. Параметр Допустимые протоколы определяет, какие запросы должна принимать служба Azure Front Door. Протокол переадресации определяет, какой протокол должна использовать служба Azure Front Door для пересылки запроса на внутренний сервер.

      Например, если внутренний сервер принимает только HTTP-запросы, приведенная ниже конфигурация будет допустимой.

      • Accepted protocols (Принимаемые протоколы): HTTP и HTTPS. Протокол переадресации — HTTP. Запрос на сопоставление не работает, так как разрешен протокол HTTPS. Если запрос был получен по протоколу HTTPS, то Azure Front Door пытается переадресовать его с использованием протокола HTTPS.

      • Допустимый протокол — HTTP. Протокол переадресации — запрос на сопоставление или HTTP.

    • Переопределение URL-адреса по умолчанию отключено. Этот параметр используется только в том случае, если необходимо ограничить область доступных ресурсов, размещенных на внутреннем сервере. Если этот параметр отключен, служба Azure Front Door будет пересылать тот же путь запроса, который она получает. При настройке этого параметра возможны ошибки. Поэтому когда Azure Front Door запрашивает ресурс у внутреннего сервера, который недоступен, возвращается код состояния HTTP 404.

В ответ на запрос на имя интерфейсного узла возвращается код состояния 411

Симптом

Вы создали экземпляр Azure Front Door, настроив интерфейсный узел, серверный пул как минимум с одним сервером и правило маршрутизации, которое регулирует подключение интерфейсного узла к серверному пулу. Содержимое недоступно при отправке запроса к настроенному интерфейсному узлу, так как возвращается код состояния HTTP 411.

Ответы на такие запросы также могут содержать HTML-страницу ошибки с пояснительной инструкцией. Например: HTTP Error 411. The request must be chunked or have a content length.

Причина

Этот симптом может возникать по нескольким причинам. Общая причина заключается в том, что HTTP-запрос не полностью совместим с RFC.

Пример несоответствия — запрос POST, отправленный без заголовка Content-Length или Transfer-Encoding , (например, с использованием curl -X POST https://example-front-door.domain.com). Этот запрос не соответствует требованиям RFC 7230. Azure Front Door блокирует такой запрос и возвращает код HTTP 411.

Это поведение не зависит от функции брандмауэра веб-приложений (WAF) в Azure Front Door. В настоящее время отключить это поведение невозможно. Все HTTP-запросы должны соответствовать требованиям, даже если функция WAF не используется.

Действия по устранению неполадок

  • Убедитесь, что ваши запросы соответствуют требованиям, перечисленным в соответствующих стандартах RFC.

  • Обратите внимание на текст HTML-сообщения, возвращаемого в ответ на запрос. Текст сообщения часто объясняет, почему запрос не соответствует требованиям.