Поделиться через


Коды http-ответов в Шлюз приложений

В этой статье приводятся причины, по которым Шлюз приложений Azure возвращает определенные коды ответов HTTP. Ниже приведены распространенные причины и действия по устранению неполадок, которые помогут определить основную причину кода HTTP-ответа. Коды ответов HTTP можно вернуть в запрос клиента независимо от того, был ли инициировано подключение к целевому объекту серверной части.

Коды ответов 3XX (перенаправление)

Ответы 300-399 отображаются, когда запрос клиента соответствует правилу шлюза приложений, на который настроены перенаправления. Перенаправления можно настроить в правиле как есть или с помощью правила сопоставления путей. Дополнительные сведения о перенаправлении см. в статье Общие сведения о перенаправлении для Шлюза приложений.

301 — постоянное перенаправление;

Ответы HTTP 301 отображаются при указании правила перенаправления с постоянным значением.

302 — объект найден

Ответы HTTP 302 отображаются при указании правила перенаправления со значением Found .

303 — другой объект;

Ответы HTTP 302 отображаются при указании правила перенаправления со значением See Other .

307 — временное перенаправление.

Ответы HTTP 307 отображаются при указании правила перенаправления с временным значением.

Коды ответа 4хх (ошибка клиента)

Коды ответа 400-499 указывают на проблему, инициированную клиентом. Эти проблемы могут варьироваться от запросов, инициирующих клиент, до несоответствующего имени узла, времени ожидания запроса, неуправляемого запроса, вредоносного запроса и т. д.

Шлюз приложений собирает метрики, которые фиксируют распределение кодов состояния 4xx/5xxx, имеет механизм ведения журнала, который записывает сведения, такие как IP-адрес клиента URI с кодом ответа. Метрики и ведение журнала позволяют устранить дополнительные неполадки. Клиенты также могут получать ответ 4xx от других прокси-серверов между клиентским устройством и Шлюз приложений. Например, CDN и другие поставщики проверки подлинности. Дополнительные сведения см. в приведенных ниже статьях.

Метрики, поддерживаемые журналами диагностики SKUверсии 2 Шлюз приложений

400 — недопустимый запрос

Коды ответов HTTP 400 часто наблюдаются при:

  • Трафик, не использующий протокол HTTP/HTTPS, инициируется для Шлюза приложений с помощью прослушивателя HTTP или HTTPS.
  • Трафик HTTP инициируется для прослушивателя с использованием HTTPS без настройки перенаправления.
  • Взаимная проверка подлинности настроена, но ее не удается правильно согласовать.
  • Запрос не соответствует RFC.

Ниже приведены некоторые распространенные причины, по которым запрос не соответствует RFC:

Категория Примеры
Недопустимый узел в строке запроса Узел, содержащий две двоеточия (example.com:8090:8080)
Отсутствует заголовок узла Запрос не имеет заголовка узла
Наличие неправильно сформированного или незаконного символа Зарезервированные символы — &,!. Обходной путь — кодировать его в процентах. Например: %>
Недопустимая версия HTTP Получение /content.css HTTP/0.3
Имя поля заголовка и URI содержат символы, отличные от ASCII GET /"úü''".doc HTTP/1.1
Отсутствует заголовок "Длина содержимого" для запроса POST Понятны
Недопустимый метод HTTP GET123 /index.html HTTP/1.1
Повторяющиеся заголовки Authorization:<base64 закодированное содержимое>, авторизация: <содержимое в кодировке Base64>
Недопустимое значение в Content-Length Длина содержимого: abc,Content-Length: -10

В случаях, когда настроена взаимная проверка подлинности, несколько сценариев могут привести к возврату ответа HTTP 400, например:

  • Сертификат клиента не представлен, но включена взаимная проверка подлинности.
  • Проверка DN включена, а DN сертификата клиента не соответствует DN указанной цепочки сертификатов.
  • Цепочка сертификатов клиента не соответствует цепочке сертификатов, настроенной в определенной политике SSL.
  • Срок действия сертификата клиента истек.
  • Проверка отзыва клиента OCSP включена, и сертификат отозван.
  • Проверка отзыва клиента OCSP включена, но не удается связаться.
  • Включена проверка отзыва клиента OCSP, но ответчик OCSP не указан в сертификате.

Дополнительные сведения об устранении неполадок с взаимной проверкой подлинности см. в разделе "Устранение неполадок кода ошибки".

401 — не авторизовано;

Несанкционированный ответ HTTP 401 возвращается клиенту, если клиент не авторизован для доступа к ресурсу. Существует несколько причин для возврата 401. Ниже приведены некоторые причины для возможных исправлений.

  • Если клиент обладает правами доступа, возможно, что кэш браузера устарел. Очистите кэш браузера и попробуйте снова открыть приложение.

Несанкционированный ответ HTTP 401 можно вернуть в запрос пробы AppGW, если серверный пул настроен с проверкой подлинности NTLM . В этом случае серверная часть будет помечена как работоспособная. Есть несколько способов устранить эту проблему.

  • Разрешите анонимный доступ к серверному пулу.
  • Настройте пробу таким образом, чтобы она отправляла запрос к другому "фальшивому" сайту, для которого не требуется NTLM.
  • Не рекомендуется, так как это не скажет нам, является ли фактический сайт за шлюзом приложений активным или нет.
  • Настройте шлюз приложений, чтобы разрешить 401 ответы как допустимые для проб: условия сопоставления проб.

403 — запрещено;

Http 403 Запрещено, когда клиенты используют SKU WAF и настроены WAF в режиме предотвращения. Если включены наборы правил WAF или пользовательские правила запрета WAF соответствуют характеристикам входящего запроса, клиент будет представлен ответ на 403 запрещен.

Другие причины для клиентов, получающих 403 ответов, включают:

  • Вы используете Служба приложений в качестве серверной части и настроено разрешить доступ только из Шлюз приложений. Это может возвращать ошибку 403 по Служба приложений. Это обычно происходит из-за перенаправлений или href-ссылок, которые указывают непосредственно на Служба приложений вместо указания на IP-адрес Шлюз приложений.
  • Если вы обращаетесь к блогу хранилища и Шлюз приложений и конечной точке хранения находится в другом регионе, возвращается ошибка 403, если общедоступный IP-адрес Шлюз приложений не указан. См. раздел "Предоставление доступа" из диапазона IP-адресов Интернета.

404 — страница не найдена

Может быть получен ответ HTTP 404, если запрос отправляется в шлюз приложений, который:

408 — время ожидания запроса

Ответ HTTP 408 можно наблюдать, когда клиентские запросы к интерфейсной прослушивателю шлюза приложений не отвечают в течение 60 секунд. Эта ошибка может наблюдаться из-за перегрузки трафика между локальными сетями и Azure, когда виртуальное устройство проверяет трафик или сам клиент становится перегруженным.

413— слишком большая сущность запроса

Ответ HTTP 413 можно наблюдать при использовании Azure Брандмауэр веб-приложений на Шлюз приложений, а размер клиентского запроса превышает максимальный размер текста запроса. Поле "Максимальный размер текста запроса" определяет общий предельный размер запроса без учета отправляемых файлов. Значение по умолчанию — 128 КБ. Дополнительные сведения см. в разделе Брандмауэр веб-приложений ограничения размера запроса.

499 — клиент закрыл подключение

Ответ HTTP 499 отображается, если клиентский запрос, отправляемый в шлюзы приложений с помощью SKU версии 2, закрывается до получения ответа от сервера. Эта ошибка может наблюдаться в 2 сценариях. Первый сценарий заключается в том, что большой ответ возвращается клиенту, и клиент может закрыть или обновить приложение до завершения отправки большого ответа. Второй сценарий заключается в том, что время ожидания на стороне клиента низкое и не ожидает достаточно долго, чтобы получить ответ от сервера. В этом случае лучше увеличить время ожидания клиента. В шлюзах приложений с использованием SKU версии 1 код ответа HTTP 0 может быть вызван для клиента, закрывающего подключение до завершения ответа сервера.

Коды ответов 5XX (ошибка сервера)

Коды ответов 500-599 указывают на проблему с шлюзом приложений или сервером серверной части при выполнении запроса.

500 — внутренняя ошибка сервера

Шлюз приложений Azure не должен отображать коды ответа 500. Если вы видите такой код, откройте запрос в службу поддержки, поскольку эта проблема свидетельствует о наличии внутренней ошибки службы. Сведения о том, как открыть вариант поддержки, см. в статье "Создание запроса поддержка Azure".

502 — недопустимый шлюз

Ошибки HTTP 502 могут иметь несколько основных причин, например:

Сведения о сценариях возникновения ошибок 502 и их устранении см. в разделе "Устранение ошибок плохого шлюза".

504 — время ожидания шлюза

Номер SKU шлюза приложений Azure версии 2 отправляет ошибки HTTP 504, если время отклика серверной части превышает значение времени ожидания, настроенное в параметре серверной части.

IIS

Сведения о задании времени ожидания для внутреннего сервера IIS см. в статье Стандартные ограничения для сайтов. Дополнительные сведения см. в атрибуте connectionTimeout . Убедитесь, что время ожидания подключения в IIS соответствует времени ожидания, настроенному в параметре серверной части, или не превышает его.

nginx

Если внутренний сервер является контроллером ingress nginx или nginx, а если он имеет вышестоящий сервер, убедитесь, что значение совпадений nginx:proxy_read_timeout или не превышает время ожидания в параметре серверной части.

Следующие шаги

Если сведения в этой статье не помогают устранить проблему, отправьте запрос в службу поддержки.