提问者:小点点

Nodejssocket.io一个apache代理


一段时间以来,我一直在尝试使nodejs / socket.io 服务器在Apache(2.4)反向代理上工作。服务器在我的本地和没有代理的 Apache 上运行良好。它也适用于反向代理而无需 socket.io。所以我认为我主要是在套接字/io 代理配置方面遇到问题。我已经尝试了很多东西(在 Apache 反向代理上运行 Socket.io https://github.com/socketio/socket.io/issues/1696 socket.io 运行的问题),但没有一个奏效,很可能是因为我对代理重定向和 socket.io 的理解非常肤浅。这是我文件的最新配置(简化):

server.js (in /nodejs)

var serverPort =3003
var http = require('http');
var fs = require('fs');
var server = http.createServer(function (req, res) {
  fs.readFile('index.html', function(err, data) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write(data);
    return res.end();
  });
});

var io = require('socket.io')(server);

server.listen(serverPort, '127.0.0.1');

io.on('connection', function(socket) {
  console.log('new connection');
  socket.emit('message', 'This is a message from the dark side.');
});

index.html (在 /nodejs 中)

<script src="/socket.io/socket.io.js"></script>
      var socket = io.connect();
      socket.on('message', function(data) {
        alert(data);
      });

这已经带来了一些问题,无法访问socket.io.js文件(第一行),当通过直接链接提供时,问题出现在连接部分(因为无法访问服务器端)。

以下是我认为相关的https.conf文件的一部分:

<VirtualHost xx.xx.xx.xx:443>

<Proxy balancer://mongrel3003>
BalancerMember http://localhost:3003
</Proxy>
ProxyPass /nodejs balancer://mongrel3003
ProxyPass /socket.io balancer://mongrel3003
ProxyPassReverse /nodejs balancer://mongrel3003
ProxyPassReverse /socket.io balancer://mongrel3003
</VirtualHost>

任何帮助非常感谢。谢谢


共1个答案

匿名用户

就像在你链接的帖子中一样,你实际上并不是在代理网络插座……

答案基本上是完整的:

  1. 您需要安装正确的apache模块
  2. 按照您链接的帖子中的指导进行操作。socket.io的apache设置有点复杂,但帖子大多是正确的。如果您厌倦了它,它不起作用,很可能您没有安装模块。

如果这一切对你不起作用,请在推特上联系或评论我的回复:)