节点转发路径请求到另一台服务器

时间:2015-06-12 10:28:54

标签: node.js express routing routes request

目前有一个网站运行一个节点服务器来处理example.com的所有请求,我在一个单独的服务器(运行apache)上创建了一个完全独立的wordpress博客,我想在{{1}这样的路径上服务} example.com/blog IP地址。 wordpress服务器不会共享任何代码,甚至不知道除了它自己之外是否存在任何代码

node / express以这种方式转发所有请求的最佳方式是什么?另外,新wordpress服务器的A / CNAME记录应指向什么?

2 个答案:

答案 0 :(得分:9)

这有效:这是您需要在节点应用中添加的内容:

var express = require('express');
var app = module.exports = express();

var proxy = require('http-proxy').createProxyServer({
    host: 'http://your_blog.com',
    // port: 80
});
app.use('/blog', function(req, res, next) {
    proxy.web(req, res, {
        target: 'http://your_blog.com'
    }, next);
});

app.listen(80, function(){
    console.log('Listening!');
});

然后在您的wordpress应用中,您需要将网站网址设置为http://your_node_app.com/blog

注意:您可能已经有一个明确的应用程序可能有一个body-parser中间件causes errorsgenerally doesn't play well with POST requests in http-proxy

你会在这些线程中找到几个解决方案,即1:只需将此代理放在 body-parser之前,或者2:使用connect-restreamer

答案 1 :(得分:0)

经过测试并

var express = require('express');
var proxy = require('http-proxy-middleware');
var app = express();
app.use('*', proxy({target: 'https://yourdomain.com', changeOrigin: true}));
app.listen(3000);

先安装以下内容

npm i -s express
npm i -s http-proxy-middleware