我想将 /n/ 请求传递给 node.js,然后将其他所有内容留给端口 8080 上的 Apache。代理在端口 80 上运行,/n/ 的代码在端口 9000 上。
但是,像节点这样的东西socket.io
被破坏了,因为我认为它没有被正确代理 - socket.io 查询从 apache 返回 404,如预期的那样:
404 未找到
未找到
在此服务器上未找到请求的 URL /socket.io/socket.io.js。
Apache/2.2.22 (Ubuntu) 服务器在 localhost 端口 8080
我的 /n/ 的起始 HTML 代码:
<!DOCTYPE html>
<html>
<head>
<script src="/socket.io/socket.io.js"></script>
代理:
var app = require('http').createServer(handler);
var io = require('socket.io').listen(app);
var fs = require('fs');
var url = require('url');
var httpProxy = require('http-proxy');
io.set('log level', 1);
app.listen(9000);
httpProxy.createServer({
router: {
'localhost/n': '127.0.0.1:9000',
'localhost': '127.0.0.1:8080'
}
}).listen(80);
如何让代理socket.io/socket.io.js
通过 Node,而不是 Apache?我曾尝试使用为我的静态文件提供服务的相同代码(例如 css/js),但似乎不存在名为socket.io
的实际文件夹 - 节点似乎重写了它。