Обратный прокси-сервер 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" /> 
Другие вопросы по тегам