Обратный прокси-сервер ARR на веб-сайте Azure удаляет заголовок ответа WebSockets "Sec-WebSocket-Accept"
Я пытаюсь настроить ARR на веб-сайте Azure. У меня есть рабочая реализация на виртуальной машине Azure, но я хотел бы перейти на веб-сайт, чтобы мне не приходилось активно управлять виртуальной машиной.
У меня проблема связана с запросом и ответом на соединение SignalR WebSockets, которые проходят через мой обратный прокси-сервер ARR.
Ответ на сервере перед прохождением через ARR через IIS Request Tracing:
Upgrade: Websocket
Server: Microsoft-IIS/8.0
X-Content-Type-Options: nosniff
X-Powered-By: ASP.NET
X-Powered-By: ARR/3.0
Sec-WebSocket-Accept: IVoaaOhRLbaSxQzHV1TRkwHbtFc=**
Connection: Upgrade
X-FE-DATA: AppId:Unknown-StatusCode
X-Powered-By: ASP.NET
DWAS-Handler-Name: EXECUTE|101|0|0x0|CONFIG_SUCCESS|ApplicationRequestRoutingHandler|::1|\\100.68.100.59\volume-21-default\be0a77feeba577989612\3323291baecf417bb67a391f58af8a90\
Ответ с точки зрения клиента:
HTTP/1.1 101 Switching Protocols
Upgrade: Websocket
Server: Microsoft-IIS/8.0
X-Powered-By: ASP.NET
X-Powered-By: ARR/3.0
X-Powered-By: ASP.NET
Connection: Upgrade
Как видите, Sec-WebSocket-Accept
заголовок удаляется из ответа. Это означает, что клиент не устанавливает соединение и по умолчанию использует длинный опрос вместо протокола веб-сокетов.
Любая идея, почему
1 ответ
Вы указали флаг для preserveHostHeaders="true" в конфигурации прокси?
<proxy xdt:Transform="InsertIfMissing" enabled="true" preserveHostHeader="true" reverseRewriteHostInResponseHeaders="true" />