通过 IIS ARR 代理 Meteor WebSockets
Proxying Meteor WebSockets through IIS ARR
我们需要通过 IIS 代理来代理 Meteor。 IIS 站点接受特定 Meteor 网站的绑定并将请求代理到备用端口。
Web 套接字不工作,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 正在更改 header 的大小写,删除 header (sec-websocket-extensions) 并添加一些额外内容。这可能不相关。
IIS 代理:
直接:
MS 文档建议在与 NodeJS 一起使用时禁用 WebSockets。更新此设置没有帮助。
http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-websocket-protocol-support#TOC301258519
有人遇到过这个问题吗?
更新
你会注意到上面的 header 引用了 ARR2.5,这个版本不支持网络套接字。代理套接字需要 3.0。
通过替代方案 web socket hello world 测试代理后,ARR 成功代理了网络套接字。为了解决这个问题,我们在 Meteor 中禁用了对网络套接字的压缩。
SERVER_WEBSOCKET_COMPRESSION environment variable to 0
我们需要通过 IIS 代理来代理 Meteor。 IIS 站点接受特定 Meteor 网站的绑定并将请求代理到备用端口。
Web 套接字不工作,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 正在更改 header 的大小写,删除 header (sec-websocket-extensions) 并添加一些额外内容。这可能不相关。
IIS 代理:
直接:
MS 文档建议在与 NodeJS 一起使用时禁用 WebSockets。更新此设置没有帮助。 http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-websocket-protocol-support#TOC301258519
有人遇到过这个问题吗?
更新 你会注意到上面的 header 引用了 ARR2.5,这个版本不支持网络套接字。代理套接字需要 3.0。
通过替代方案 web socket hello world 测试代理后,ARR 成功代理了网络套接字。为了解决这个问题,我们在 Meteor 中禁用了对网络套接字的压缩。
SERVER_WEBSOCKET_COMPRESSION environment variable to 0