Node.js - 使用 Express 和 http-proxy 进行反向代理

Posted jffun-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js - 使用 Express 和 http-proxy 进行反向代理相关的知识,希望对你有一定的参考价值。

安装 Express 和 http-proxy

npm install --save express http-proxy

反向代理代码

proxy.js

var express = require(‘express‘);
var app = express();
var httpProxy = require(‘http-proxy‘);
var apiProxy = httpProxy.createProxyServer();
var serverOne = ‘http://localhost:3001‘,
    ServerTwo = ‘http://localhost:3002‘;

// 访问 http://localhost:3000/server1 时,代理 http://localhost:3001/server1
app.all("/server1", function(req, res) {
    apiProxy.web(req, res, {
        target: serverOne
    });
});

// 访问 http://localhost:3000/server2 时,代理 http://localhost:3002/server2
app.all("/server2", function(req, res) {
    apiProxy.web(req, res, {
        target: ServerTwo
    });
});

// 访问 http://localhost:3000/xxx 时,代理 http://localhost:3001/xxx
app.all("/*", function(req, res) {
    apiProxy.web(req, res, {
        target: serverOne
    });
});

app.listen(3000);

服务代码

server.js

const express = require(‘express‘);
const server = express();
const server2 = express();
server.get(‘/*‘, function(req, res) {
    res.send(`Hello world From Server 1 <br> req.path : ${req.path}`);
});
server2.get(‘/*‘, function(req, res) {
    res.send(`Hello world From Server 2 <br> req.path : ${req.path}`);
});

// serverOne
server.listen(3001);
// ServerTwo
server2.listen(3002);

测试

  1. 分别启动 server.js 和 proxy.js:node proxynode server
  2. 浏览器访问http://localhost:3000/server1等地址进行测试

参考

Reverse proxy using ExpressJS – Codeforgeek

以上是关于Node.js - 使用 Express 和 http-proxy 进行反向代理的主要内容,如果未能解决你的问题,请参考以下文章

body-parser Node.js(Express) HTTP请求体解析中间件

通过 NODE JS & express & jquery 向任何 API 提交请求后,在 HTML 中打印 var 值

使用 Node.js 和 Express 发布时如何访问请求正文?

使用 node.js 和 express 的 JQuery Ajax 发布请求

Express 和 node.js 中的 HTML?

第3章第358回基于 TypeScript 的 Node.js 框架 Nest 正式版发布!(上)