我可以使用Apache作为主web服务器,但在node.js
和客户端网页之间通过Apache代理进行websocket连接吗?如何设置?
是的,出于多种原因(速度、安全性、单SSL终止等),我建议使用这种方法(前面是完整的Web服务器,后面是多个节点服务器)。
为此使用mod_proxy,例如,如果您的节点服务运行在Apache所在主机的端口3000上,并且希望从www.example.com/node访问它,则使用以下配置:
ProxyPass/note/http://localhost:3000/nodeProxyPassReverse/note/http://localhost:3000/node
请在此处查看更多详细信息:NodeJs而不是Apache
我最近和一位前同事(注意,我说是前同事)就网络套接字以及它们到底是什么/如何工作进行了激烈的辩论。。。他对称之为"HTTP升级"感到困惑,并坚信为页面提供服务的网络服务器也必须托管网络套接字。目前,我正在开发一个名为libwebstock的开源web套接字库。。。现在,v1有缺陷,需要做一些工作(它会泄漏内存,在优化方面没有第二个版本那么强大),但它正在实现中。话虽如此,我可以给你一些更好的见解。。。
为页面服务的内容无关紧要。你可以使用Apache、IIS、PHP等等。web套接字连接充当简单的TCP连接,但使用HTTP头来启动连接。我认为,这样做是为了让它通过防火墙,并将其标准化为HTTP的扩展,但无论如何,它仍然与HTTP完全分离。
目前,我使用nginx为我的页面提供服务,并使用C编写的web套接字服务器为web套接字连接提供服务。虽然他们可以在端口80上连接到www.mywebsocketsite.com,但会提供javascript,打开到端口8085的网络套接字连接(假设),该端口连接到所述C编写的程序。从那里,JavaScript被用来发送和处理接收到的数据。web套接字本身完全独立于为加载页面提供服务的web服务器。将web套接字视为客户端浏览器和服务器之间的流TCP连接,并将web服务器视为向客户端发送指令的传送机制。