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);
测试
- 分别启动 server.js 和 proxy.js:
node proxy
,node server
- 浏览器访问
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 发布时如何访问请求正文?