我们正在开发一个需要利用 html5 websockets 的 Ruby on Rails 应用程序。目前,我们有两个独立的“服务器”:我们的主应用程序在 nginx+passenger 上运行,以及一个使用 Pratik Naik 的Cramp框架(在Thin上运行)的独立服务器来处理 websocket 连接。
理想情况下,当需要部署时,我们会在 nginx+passenger 上运行 rails 应用程序,并且 websocket 服务器将代理在 nginx 后面,因此我们不需要让 websocket 服务器运行在不同的端口上。
问题是,在这个设置中,nginx 似乎过早地关闭了与 Thin 的连接。与瘦服务器的连接成功建立,然后立即关闭并显示 200 响应代码。我们的猜测是 nginx 没有意识到客户端正在尝试为 websocket 流量建立一个长时间运行的连接。
诚然,我对 nginx 配置并不是那么精通,那么,甚至可以将 nginx 配置为 websocket 服务器的反向代理吗?还是我必须等待 nginx 为新的 websocket 握手提供支持?假设要求应用程序服务器和 websocket 服务器都在端口 80 上侦听,这是否意味着我现在必须在没有 nginx 的单独服务器上运行 Thin?
提前感谢您的任何意见或建议。:)
-约翰