我在windows server 2012 r2中成功安装了Apache2.2.22和nodejs 0.10.12.
我使用nssm成功地使节点成为Windows服务,因此它将始终运行.
节点"住"在8000端口,我在Apache的安装代理httpd.conf
,像这样
ProxyPass /nodejs http://localhost:8000 ProxyPassReverse /nodejs http://localhost:8000
当我在服务器的浏览器中检查我的网站时,websockets工作正常.
当我在笔记本电脑浏览器中查看我的网站时,我收到错误消息.
我想这是因为我创建像这样的websockets
var ci = new WebSocket("ws://localhost:8000");
这就是为什么在服务器上工作,而不是在笔记本电脑上.因为localhost
.首先,我是对的吗?
第二.唯一的问题是,我不知道如何为websockets创建相对路径.我尝试了不同的语法,但没有运气.拜托,有人可以告诉我怎么做,并向我解释一下吗?
提前致谢.
编辑:我没有设置Windows Server 2012 R2.一位同事做了.我刚上传了这个网站.我在Windows防火墙中制作了入站规则,因此端口8000已打开.另外,一个用于端口80(用于Apache).我试过像robertklep建议的东西,没有运气.也许是OS的问题?(安全限制?)
里面httpd.conf
我也有
ProxyPass /geoserver http://localhost:8080/geoserver ProxyPassReverse /geoserver http://localhost:8080/geoserver
它在节点的代理之前.它关于Geoserver和8080端口,它也有一个入站规则.工作得很好.
节点仅在本地工作(具有localhost
URL).在本地,如果我删除Proxy
线httpd.conf
,仍然有效.
我不知道如何安装/配置proxy_wstunnel_module
.而且我不确定我是否需要它.
我尽力而为,请建议
谢谢
第一:是的,你是对的.
第二:我认为WebSocket URL始终必须是绝对的.要动态确定该URL,您可以使用以下内容:
var ci = new WebSocket('ws://' + location.hostname + ':8000');
我假设您没有在端口8000上使用节点服务器来提供HTML文件.如果你是,这可能也有效(并且有点短):
var ci = new WebSocket('ws://' + location.host);