iis - 通过 IIS ARR 代理 Meteor WebSockets

标签 iis meteor proxy websocket arr

我们需要通过 IIS 代理来代理 Meteor。 IIS 站点接受特定 Meteor 网站的绑定(bind),并将请求代理到备用端口。

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 代理:

Failed Headers

直接的:

Working Headers

MS 文档建议在与 NodeJS 一起使用时禁用 WebSockets。更新此设置无济于事。
http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-websocket-protocol-support#TOC301258519

有没有人遇到过这个问题?

更新
你会注意到上面的标题引用了 ARR2.5,这个版本不支持 web sockets。代理套接字需要 3.0。

最佳答案

通过替代 web socket hello world 测试代理后, ARR 正在成功代理 Web 套接字。为了解决这个问题,我们在 Meteor 中禁用了 Web 套接字的压缩。

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

关于iis - 通过 IIS ARR 代理 Meteor WebSockets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34389307/

相关文章:

asp.net - 从VS发布Web.Release.config到IIS,web部署,一键发布

meteor - 使用Meteor + Vue + D3,我应该把d3代码放在哪里?

代理通行证的 SSL 证书?

sockets - 使用套接字创建代理

Meteor - 在每次页面加载时执行代码

proxy - 如何将 HTTP/HTTPS 代理与 boto3 一起使用?

iis - IIS在Powershell中启用HTTP保持事件状态

linux - 可以在 Linux 上为同一个应用程序同时运行 IIS 和 Apache 服务器吗?

azure - ASP.NET WebAPI URL 版本控制

meteor - 为什么我的带有帐户包的 Meteor 应用程序没有发送验证电子邮件?