Сбои маршрутизации ARR (Application Request Routing): решение HTTP 502.3
Симптомы сбоев маршрутизации в ARR
При использовании модуля Application Request Routing (ARR) в качестве обратного прокси клиенты получают ошибки HTTP Error 502.3 - Bad Gateway: A connection with the server could not be established или HTTP Error 504 - Gateway Timeout. Серверная ферма (Server Farm) помечает целевые бэкенд-ноды как Unhealthy.
| Симптом | Причина |
|---|---|
| HTTP 502.3 (WinHttp error 12002/12029) | ARR не может установить TCP-соединение с бэкендом или превышен таймаут |
| Ферма помечает сервер как Unhealthy | Health Check проваливает проверку URL из-за неверного статус-кода ответа |
| Заголовки X-Forwarded-For не передаются | Не настроена перезапись заголовков в правилах URL Rewrite |
Пошаговое восстановление маршрутизации ARR
- Увеличьте таймаут ответа прокси (Time-out) в настройках ARR:
& "$env:SystemRoot\System32\inetsrv\appcmd.exe" set config -section:system.webServer/proxy /timeout:"00:02:00" /commit:apphost - Проверьте доступность бэкенд-серверов по порту:
Test-NetConnection -ComputerName 10.0.0.15 -Port 80; Test-NetConnection -ComputerName 10.0.0.16 -Port 80 - Включите сохранение и передачу оригинального заголовка Host:
& "$env:SystemRoot\System32\inetsrv\appcmd.exe" set config -section:webFarms /[name='ИмяФермы'].applicationRequestRouting.protocol.preserveHostHeader:true /commit:apphost - Проверьте статус Health Check: в IIS Manager перейдите в Server Farms > ВашаФерма > Health Check и настройте корректный URL для проверки (например,
/healthz) с кодом ответа200-399.
Внимание: Убедитесь, что в глобальных настройках прокси (IIS Server > Application Request Routing > Server Proxy Settings) установлен флажок «Enable proxy».
Частые вопросы (FAQ)
Что означает ошибка 12029 в трассировке ARR?
Код ERROR_WINHTTP_CANNOT_CONNECT указывает, что бэкенд-сервер отклонил соединение, целевая служба остановлена или заблокирована фаерволом.
Как настроить Sticky Sessions в ARR?
В свойствах Server Farm перейдите в раздел 'Server Affinity', включите 'Client affinity' и задайте имя cookie-файла.
Почему ARR возвращает 502.3 при передаче больших файлов?
Срабатывает лимит времени ответа прокси или лимит максимального размера запроса maxAllowedContentLength.
Как сбросить статус Unhealthy для серверов фермы вручную?
В меню мониторинга фермы в IIS Manager нажмите 'Reset runtime statistics'.