Проксирование веб-узлов Meteor через IIS ARR

У нас есть необходимость прокси-сервера Meteor через прокси-сервер IIS. Сайт IIS принимает привязки для определенного веб-сайта Meteor и проксирует запросы через альтернативный порт.

Веб-сокеты не работают, а Meteor возвращается в XHR.

Файл Web.Config выглядит следующим образом:

<rule name="Meteor reverse proxy" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{CACHE_URL}" pattern="^(.+)://" />
    </conditions>
    <action type="Rewrite" url="{C:1}://127.0.0.1:8008/{R:1}" />
</rule>

Получив доступ к веб-сайту через 127.0.0.1:8008 на сервере, он отлично работает. Не удается получить доступ к веб-сайту через прокси-сервер IIS.

Я заметил, что IIS ARR меняет обложку заголовков, удаляет заголовок (sec-websocket-extensions) и добавляет несколько дополнений. Это может быть не связано.

IIS Proxy:

Failed Headers

Direct:

Рабочие заголовки

Документация MS рекомендует отключать WebSockets при использовании вместе с NodeJS. Обновление этого параметра не помогает. http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-websocket-protocol-support#TOC301258519

Кто-нибудь сталкивался с этой проблемой?

Обновление Вы увидите заголовок выше ссылок ARR2.5, эта версия не поддерживает веб-сокеты. 3.0 требуется для прокси-сокетов.

Ответы

Ответ 1

После тестирования прокси-сервера через альтернативный мир приветствия веб-сокета, ARR успешно проксимировал веб-сокеты. Чтобы решить проблему, мы отключили сжатие на веб-сокетах внутри Meteor.

SERVER_WEBSOCKET_COMPRESSION environment variable to 0

https://forums.meteor.com/t/websocket-compression-introduced-in-meteor-1-2-doesnt-work-with-passenger-docker-nginx/12025