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


Создание пользовательских страниц ошибок шлюза приложений

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

  • Отображение страницы обслуживания или состояния для кодa ответа 502 Плохой шлюз. Это полезно, если у шлюза приложений нет серверного сервера для маршрутизации трафика во время запланированного обслуживания или непредвиденной проблемы с серверами внутреннего пула.
  • Отображение настраиваемой страницы несанкционированного доступа для кода ответа 403 Запрещено, который возникает, когда WAF активирован для предотвращения и блокирует вредоносный траффик.
  • Отображение фирменной страницы компании с контактными данными в случае проблемы.

Поддерживаемые коды ответов

Пользовательские страницы ошибок поддерживаются для следующих кодов ответов:

Код ответа Description
400 Недопустимый запрос
403 Forbidden
405 Метод не разрешен
408 Время ожидания запроса
500 Внутренняя ошибка сервера
502 Недопустимый шлюз
503 Служба недоступна
504 Таймаут ожидания шлюза

Note

Если вы размещаете настраиваемые страницы ошибок в Azure Blob Storage, учетная запись хранения должна быть общедоступной из Интернета, чтобы шлюз приложений мог загружать страницы. Пользовательские страницы ошибок не могут обслуживаться из конечной точки CDN, расположенной перед учетной записью хранилища — шлюз приложений в настоящее время не поддерживает получение страниц ошибок по URL-адресам CDN. Если вы используете CDN с учетной записью хранения, убедитесь, что шлюз приложений может получить доступ к учетной записи хранения напрямую, а не только через CDN.

  • API версии 2022-09-01 или более поздней версии следует использовать для настройки страниц ошибок для всех доступных кодов ответов.
  • Код ответа 404 (страница не найдена) в настоящее время не поддерживается.
  • Пользовательские страницы ошибок отображаются для кодов ответов, созданных Шлюзом приложений. Если ошибка возникает с серверного сервера, она передается клиенту без изменений.

Уровни конфигурации

Пользовательские страницы ошибок можно определить на глобальном уровне или уровне слушателя:

  • Глобальный уровень — страницы ошибок, установленные на глобальном уровне, применяются ко всем слушателям этого шлюза приложений. Его конфигурация через портал Azure в настоящее время не поддерживается.
  • Уровень прослушивателя . Страницы ошибок на уровне прослушивателя позволяют детализировать управление, чтобы задать страницы ошибок для приложения, обслуживаемого этим прослушивателем.

Note

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

Requirements

Чтобы создать собственную страницу для отображения ошибок, необходимо

  • Определите код ответа, для которого требуется настраиваемая страница ошибок.
  • знают соответствующий удаленный адрес (URL) HTML-страницы. Это должен быть общедоступный файл.
  • Убедитесь, что страница с сообщением об ошибке общедоступна и возвращает код ответа 200.
  • убедитесь, что страница ошибки должна находиться в типе расширения *.htm или *.html.
  • Убедитесь, что размер страницы меньше 1 МБ.
  • Убедитесь, что параметры доступа к сети имеют значение "разрешено для всех сетей" при использовании учетной записи хранения Blob-объектов Azure.

Вы можете ссылать на внутренние или внешние изображения или CSS для этого HTML-файла. Для ресурсов с внешней ссылкой используйте абсолютные URL-адреса, которые являются общедоступными. Учитывайте размер HTML-файла при использовании встроенных образов в кодировке Base64, JavaScript или CSS.

Note

  • В экосистеме Azure необходимо использовать учетную запись хранения BLOB-объектов Azure или виртуальную машину для размещения страницы ошибки. Обратите внимание, что хранилище BLOB-объектов должно быть доступно напрямую, так как учетные записи хранения, созданные службами Azure CDN, в настоящее время не поддерживаются.
  • Вы также можете разместить страницы ошибок в любом удаленном месте.
  • Относительные ссылки не поддерживаются.

Как это работает?

После указания страницы ошибок в конфигурации шлюза приложений шлюз проверяет подключение к HTML-странице через Интернет. Затем он скачивает файл в локальном кэше.

Когда клиент сталкивается с ошибкой, шлюз приложений возвращает код отклика и страницу HTML. Все внешние ресурсы (например, изображения, JavaScript и CSS-файлы) извлекаются непосредственно клиентом.

Шлюз приложений периодически не проверяет расположение исходного файла, чтобы получить новую версию. Вы можете выполнить любое обновление конфигурации шлюза, чтобы вручную обновить кэш файла. Например, изменение URL-адреса ошибки с страницы 1 на страницу 2, а затем обратно на страницу 1 или при добавлении нового прослушивателя.

Конфигурация портала

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

  1. Перейдите к Шлюзу приложений на портале и выберите необходимый ресурс.

  2. Выберите прослушиватели и перейдите к определенному прослушивателю, для которого нужно указать страницу ошибки.

  3. В разделе "Пользовательские страницы ошибок " укажите общедоступные URL-адреса для требуемых кодов состояния.

  4. Выберите Сохранить.

    Снимок экрана: настраиваемая страница ошибок шлюза приложений.

Конфигурация Azure PowerShell

Azure PowerShell можно использовать для настройки настраиваемой страницы ошибок. Например, пользовательская глобальная страница ошибок:

$appgw   = Get-AzApplicationGateway -Name <app-gateway-name> -ResourceGroupName <resource-group-name>

$updatedgateway = Add-AzApplicationGatewayCustomError -ApplicationGateway $appgw -StatusCode HttpStatus502 -CustomErrorPageUrl "http://<website-url>"

Set-AzApplicationGateway -ApplicationGateway $appgw

Или страница ошибки уровня прослушивателя:

$appgw   = Get-AzApplicationGateway -Name <app-gateway-name> -ResourceGroupName <resource-group-name>

$listener01 = Get-AzApplicationGatewayHttpListener -Name <listener-name> -ApplicationGateway $appgw

$updatedlistener = Add-AzApplicationGatewayHttpListenerCustomError -HttpListener $listener01 -StatusCode HttpStatus502 -CustomErrorPageUrl "http://<website-url>"

Set-AzApplicationGateway -ApplicationGateway $appgw

Дополнительные сведения см. в разделе Add-AzApplicationGatewayCustomError и Add-AzApplicationGatewayHttpListenerCustomError.

Дальнейшие шаги

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