1. 首先安装express、http-proxy-middleware和connect-timeout(此模块用于处理超时):
npm install --save-dev express http-proxy-middleware connect-timeout
2. 新建一个proxy-server.js文件。
const express = require('express');
const timeout = require('connect-timeout');
const proxy = require('http-proxy-middleware');
const app = express();
// 这里从环境变量读取配置,方便命令行启动
// HOST 指目标地址
// PORT 服务端口
const {
HOST = 'http://xxx.xxx.xxx.xxx:5000', PORT = '3300'
} = process.env;
// 超时时间
const TIME_OUT = 30 * 1e3;
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
});
// 设置端口
app.set('port', PORT);
// 设置超时 返回超时响应
app.use(timeout(TIME_OUT));
app.use((req, res, next) => {
if (!req.timedout) next();
});
// 静态页面
// 这里一般设置你的静态资源路径
app.use('/', express.static('static'));
// 反向代理(这里把需要进行反代的路径配置到这里即可)
// eg:将/api/test 代理到 ${HOST}/api/test
app.use(proxy('/js/get_gate_record', {
target: HOST
}));
// 监听端口
app.listen(app.get('port'), () => {
console.log(`server running @${app.get('port')}`);
});
3. 启动
node proxy-server.js
//此时则需要在http://localhost:3301进行访问。