我正在使用MAMP服务器和节点js。
我的问题是我想在同一个端口上运行apache服务器和节点,但是在线解决方案非常复杂,因为它没有服务于大部分目的,我也是Node的新手。 我需要一个简单的解决方案,我可以在apache服务器的端口上节点。
代码如下,
它工作正常,因为一切都在不同的端口运行,但我想要的服务器'在运行apache的端口8888上运行。或者某种方式让节点与apache进行交互
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
var mysql = require('mysql');
var router = express.Router();
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'root',
database : 'db',
port : '8889'
});
server.listen(8888); <----- ERROR
console.log('server running.......');
connection.connect(function(error){
if(!!error) {
console.log('error in db connection');
} else {
console.log('db connected');
}
});
app.use('/*', router);
router.get('/*', function (req, res) {
console.log('hello there...');
});
答案 0 :(得分:0)
您可以使用http-proxy
。
var http = require('http'),
httpProxy = require('http-proxy'),
proxyServer = httpProxy.createServer ({
hostnameOnly: true,
router: {
'127.0.0.1': '127.0.0.1:8080'
}
});
proxyServer.listen(8888);
这将创建一个节点进程,侦听端口 8888 ,并将请求的域转发到 8080 。
答案 1 :(得分:0)
你会发现很多关于这个主题的教程,但这里有一个概述:
答案 2 :(得分:0)
我认为正确的方法是使用Apache的Proxypass“面对”Node服务。这将转发到在不同端口上运行的节点服务的路径。
将以下内容添加到httpd.conf或vhost下并重新启动Apache应该会给你一个工作结果
#I'm using 8890 for Node since your Apache runs on 8888 and DB is on 8889
ProxyPass /node/ http://localhost:8890/
ProxyPassReverse /node/ http://localhost:8890/
导航到http://localhost:8888/node/会将您连接到端口8890上运行的节点服务。