Websockets 代理并与 IIS Web 服务器同时使用端口 443

Posted

技术标签:

【中文标题】Websockets 代理并与 IIS Web 服务器同时使用端口 443【英文标题】:Websockets proxies and using port 443 simultanously with IIS web server 【发布时间】:2015-05-11 09:19:02 【问题描述】:

我已经阅读了很多关于 websockets 和反向代理等的信息,但直到现在我还没有得到任何令人满意的解决方案或答案。

    如果我想在同一个端口(80 或 443)上使用 websockets 和我的 web 服务器,是否有可能让它与 IIS 一起使用?我知道在 IIS 8 之后会有一些变化,但是以前的版本有什么变化,以及如何在 IIS 8 中进行配置?

    我配置的每个服务器都可以有另一个 url,甚至可以有一个代理来导航。那么我可以配置我的 javascript 客户端,使其始终到达 websocket 服务器吗? 我知道我可以这样做:

    var url = ws://" + window.location.hostname + ":12345";

但是如果有代理怎么办?

谢谢!

【问题讨论】:

【参考方案1】:

8 之前的 IIS 版本不支持 WebSocket。如果您想拥有 websocket,则需要将其托管在另一个进程中,当然是在另一个端口中。

IIS8 可以在与 Web 应用程序相同的端口上处理 websocket。您可以在同一个 ASP.NET 应用程序中使用不同的 websockets 端点,例如 /sports/soccer 中的一个来获取有关足球的更新,而 /sports/golf 中的另一个来获取有关高尔夫的更新,如果您愿意,它们将具有不同的处理程序。

关于代理,请阅读How html5 Web Sockets Interact With Proxy Servers。基本上,如果您使用 WSS://,大多数情况下都可以。

【讨论】:

以上是关于Websockets 代理并与 IIS Web 服务器同时使用端口 443的主要内容,如果未能解决你的问题,请参考以下文章

Nginx代理WebSockets配置详解

分布式系列十三: nginx

通过 Tomcat servlet 代理常规 HTTP 和 WebSocket

apache websockets反向代理

企业代理背后的 Websockets

企业代理背后的 Websockets