Nodejs 无法在 ws:// apache 代理服务器上建立连接

Posted

技术标签:

【中文标题】Nodejs 无法在 ws:// apache 代理服务器上建立连接【英文标题】:Nodejs can't establish a connection to the server at ws:// apache proxy 【发布时间】:2015-07-13 14:22:14 【问题描述】:

我正在尝试将我的 nodejs 应用程序配置为使用域名在 localhost 上运行。

所以我在本地的网站是http://app.local,它指向http://localhost/app

现在我在 nodejs 上有一个应用程序,它在 6060 端口 http://localhost:6060 上运行

我正在尝试配置 localhost:6060 以在 http://app.local/nodejs 上工作

这是我的 apache 配置文件。

 <VirtualHost app.local>
    ServerAdmin webmaster@app.local
    ServerName app.local
    ServerAlias app.local

    DocumentRoot /var/www/app

    ProxyPass /service http://localhost:3000
    ProxyPassReverse /service/ http://localhost:3000/

    ProxyPass /nodejs http://localhost:6060
    ProxyPassReverse /nodejs/ http://localhost:6060/

    ProxyPass /nodejs ws://localhost:6060
    ProxyPassReverse /nodejs/ ws://localhost:6060/

    <Directory >
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <Directory /var/www/app>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog $APACHE_LOG_DIR/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog $APACHE_LOG_DIR/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>


</VirtualHost>

我的 javascript 代码监听发出:

var socket = io.connect('http://app.local/', path:'/nodejs/socket.io/', port: 6060);
socket.on('connect', function()
    console.log("Connected");
);

当我尝试通过此 URL http://app.local/nodejs 运行应用程序时,它会引发以下错误:

Firefox can't establish a connection to the server at ws://app.local/nodejs/socket.io/?EIO=3&amp;transport=websocket&amp;sid=NQ2LSn--THwZkrStAAAH.

我关注了这个question,但仍然没有工作。

我正在使用 Apache/2.4.7 (Ubuntu)

【问题讨论】:

【参考方案1】:

尝试以下方法:

改变

var socket = io.connect('http://app.local/', path:'/nodejs/socket.io/', port: 6060);

var socket = io.connect('http://app.local:6060');

【讨论】:

为什么会这样?好像和他之前放出来的一样。

以上是关于Nodejs 无法在 ws:// apache 代理服务器上建立连接的主要内容,如果未能解决你的问题,请参考以下文章

使用 NodeJS 代理通行证的 Apache SSL 配置无法启动

Websockets(ws) , NodeJs 集群,

Apache Avro 库无法解析文件 nodejs

NODEJS + WS 库 = 缓冲区分配错误

如何在安全站点上使用 nodejs ws 模块

如何从 nodejs 服务器订阅 ws websocket 到另一台服务器?