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

Mar*_*ruf 5 routing routes request node.js express

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

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

lag*_*lex 10

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

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!');
});
Run Code Online (Sandbox Code Playgroud)

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

注意:您可能已经有一个快速应用程序可能有一个正文解析器中间件导致错误,并且通常不能很好地处理http-proxy中的POST请求

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


Amr*_*him 5

工作和测试

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
const app = express();
app.use('*', createProxyMiddleware({target: 'https://yourdomain.com', changeOrigin: true}));
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)

先安装以下

npm i -s express
npm i -s http-proxy-middleware
Run Code Online (Sandbox Code Playgroud)