如何实现所有的请求通过一台机器转发

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现所有的请求通过一台机器转发相关的知识,希望对你有一定的参考价值。

参考技术A 实现所有的请求通过一台机器转发:在服务器和客户端之间放置一个桥接防火墙。 Shorewall(IP表)可以将流量重定向到不同的端口和不同的机器。防火墙是一个桥梁,您不必更改网络设置,但必须为每个网络客户端和服务器分配一个网桥接口的IP地址。否则重定向将无法工作。

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

【中文标题】节点转发路径请求到另一台服务器【英文标题】:Node forward path request to another server 【发布时间】:2015-08-28 07:57:16 【问题描述】:

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

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

【问题讨论】:

结帐node.js serve a wordpress blog 有趣,我不知道它存在,但不是我想要的。 【参考方案1】:

工作和测试

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);

先安装以下

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

【讨论】:

@maruf 请检查这个答案【参考方案2】:

这可行:这是您需要在节点应用程序中放入的内容:

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 应用程序中,您需要将站点 URL 设置为 http://your_node_app.com/blog

注意:您可能已经有一个 express 应用,其中可能包含 body-parser 中间件,其中 causes errors 和 generally doesn't play well with POST requests in http-proxy

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

【讨论】:

使用您的@laggingreflex 建议,我有这个问题:***.com/questions/55736094/… @laggingreflex, 如何读取代理请求的响应状态码和响应体?

以上是关于如何实现所有的请求通过一台机器转发的主要内容,如果未能解决你的问题,请参考以下文章

高手请进!如何利用OpenVPN共享上网?

一台机器多服务部署nginx配置

Apache 将请求转发到另一台服务器

nginx实现请求转发

负载均衡,分布式,集群的理解,多台服务器代码如何同步

secureCRT端口转发功能