Проксирование веб-узлов 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