Создание пользовательских страниц ошибок с помощью службы "Шлюз приложений"
Шлюз приложений позволяет создавать настраиваемые страницы ошибок вместо отображения страниц ошибок по умолчанию. Вы можете использовать фирменную символику и макет для ошибок, связанных с различными кодами ответов. Некоторые сценарии настройки пользовательских страниц ошибок
- Отображение страницы обслуживания или состояния для кода ответа на недопустимый шлюз 502. Это полезно, если у шлюза приложений нет серверного сервера для маршрутизации трафика во время запланированного обслуживания или непредвиденной проблемы с серверами внутреннего пула.
- Отображение настраиваемой страницы несанкционированного доступа для кода ответа 403 Запрещено, которое возникает, когда WAF находится в режиме предотвращения и блокирует вредоносный трафик.
- Отображение фирменной страницы компании с контактными данными в случае проблемы.
Поддерживаемые коды ответов
Пользовательские страницы ошибок поддерживаются для следующих кодов ответов:
Код отклика | Description |
---|---|
400 | Недопустимый запрос (в предварительной версии) |
403 | Запрещено |
405 | Метод не разрешен (в предварительной версии) |
408 | Время ожидания запроса (предварительная версия) |
500 | Внутренняя ошибка сервера (предварительная версия) |
502 | Недопустимый шлюз |
503 | Служба недоступна (в предварительной версии) |
504 | Время ожидания шлюза (предварительная версия) |
Примечание.
- API версии 2022-09-01 или более поздней версии следует использовать для настройки страниц ошибок для новых кодов ответов (в предварительной версии).
- Код ответа 404 (страница не найдена) в настоящее время не поддерживается.
- Пользовательские страницы ошибок отображаются для кодов ответов, созданных Шлюз приложений. Если ошибка возникает с серверного сервера, она передается клиенту без изменений.
Уровни конфигурации
Пользовательские страницы ошибок можно определить на уровне глобального или прослушивателя:
- Глобальный уровень . Страницы ошибок, заданные на глобальном уровне, применяются ко всем прослушивателям этого шлюза приложений. Его конфигурация через портал Azure в настоящее время не поддерживается.
- Уровень прослушивателя. Страницы ошибок на уровне прослушивателя позволяют детализировать управление, чтобы задать страницы ошибок для приложения, обслуживаемого этим прослушивателем.
Примечание.
При использовании сочетания страниц ошибок на уровне глобального и прослушивателя для шлюза необходимо явно указать URL-адреса для всех требуемых кодов ответов для этого прослушивателя. Конфигурация прослушивателя переопределяет все предыдущие глобальные конфигурации, применимые к прослушивателю.
Требования
Чтобы создать пользовательскую страницу ошибок, необходимо
- знают код ответа, для которого требуется настраиваемая страница ошибок.
- знают соответствующее удаленное расположение (URL-адрес) для HTML-страницы. Это должен быть общедоступный файл.
- Убедитесь, что страница ошибок общедоступна и возвращает ответ 200.
- убедитесь, что страница ошибок должна находиться в типе расширения *.htm или *.html.
- Убедитесь, что размер страницы меньше 1 МБ.
- Убедитесь, что параметры доступа к сети имеют значение "включено из всех сетей" при использовании учетной записи хранения BLOB-объектов Azure.
Вы можете ссылать на внутренние или внешние изображения или CSS для этого HTML-файла. Для ресурсов с внешней ссылкой используйте абсолютные URL-адреса, которые являются общедоступными. Учитывайте размер HTML-файла при использовании встроенных образов в кодировке Base64, JavaScript или CSS.
Примечание.
- В экосистеме Azure необходимо использовать учетную запись хранения BLOB-объектов Azure или виртуальную машину для размещения страницы ошибки. Обратите внимание, что хранилище BLOB-объектов должно быть доступно напрямую, так как учетные записи хранения, созданные службами Azure CDN, в настоящее время не поддерживаются.
- Вы также можете разместить страницы ошибок в любом удаленном расположении.
- Относительные ссылки не поддерживаются.
Принципы работы.
После указания страницы ошибок в конфигурации шлюза приложений шлюз проверяет подключение к HTML-странице через Интернет. Затем он скачивает файл в локальном кэше.
Когда клиент сталкивается с ошибкой, шлюз приложений возвращает код отклика и страницу HTML. Все внешние ресурсы (например, изображения, JavaScript и CSS-файлы) извлекаются непосредственно клиентом.
Шлюз приложений периодически не проверяет расположение исходного файла, чтобы получить новую версию. Вы можете выполнить любое обновление конфигурации шлюза, чтобы вручную обновить кэш файла. Например, изменение URL-адреса ошибки с страницы 1 на страницу 2, а затем обратно на страницу 1 или при добавлении нового прослушивателя.
Настройка на портале
Действия по настройке пользовательских страниц ошибок, относящихся к прослушивателю:
Перейдите к Шлюз приложений на портале и выберите необходимый ресурс.
Выберите прослушиватели и перейдите к определенному прослушивателю, для которого нужно указать страницу ошибки.
В разделе "Пользовательские страницы ошибок " укажите общедоступные URL-адреса для требуемых кодов состояния.
Выберите Сохранить.
Конфигурация 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.
Следующие шаги
Сведения о Шлюз приложений диагностика см. в разделе о работоспособности серверной части, журналах диагностики и метрик для Шлюз приложений.