一段时间以来,我一直在尝试使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>
任何帮助非常感谢。谢谢
就像在你链接的帖子中一样,你实际上并不是在代理网络插座……
答案基本上是完整的:
如果这一切对你不起作用,请在推特上联系或评论我的回复:)