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&transport=websocket&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 代理服务器上建立连接的主要内容,如果未能解决你的问题,请参考以下文章