node,express实现反向代理 node,express实现反向代理

node,express实现反向代理

1.node实现反向代理


const http = require('http');
const httpProxy = require('http-proxy');
const proxy = httpProxy.createProxyServer();
const proxyServer = http.createServer((req, res) => {
  proxy.web(req, res, {
    target: 'http://localhost:8888',
  });
});
proxyServer.listen(8088, () => {
  console.log('proxy server is running ');
});
2.express实现



首先安装expresshttp-proxy-middlewareconnect-timeout(此模块用于处理超时):

npm install --save-dev express http-proxy-middleware connect-timeout ## 如有问题,则可以尝试使用下面的代码进行安装 npm install --save-dev express@4.16.2 http-proxy-middleware@0.17.4 connect-timeout@1.9.0


const express = require('express');
const timeout = require('connect-timeout');
const proxy = require('http-proxy-middleware');
const app = express();

// 这里从环境变量读取配置,方便命令行启动
// HOST 指目标地址
// PORT 服务端口
const { HOST = 'http://10.10.0.21:9080', PORT = '3300' } = process.env;

// 超时时间
const TIME_OUT = 30 * 1e3;

// 设置端口
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('/api/test', { target: HOST }));

// 监听端口
app.listen(app.get('port'), () => {
  console.log(`server running @${app.get('port')}`);
});



const express = require('express');
const timeout = require('connect-timeout');
const proxy = require('http-proxy-middleware');
const app = express();

// 这里从环境变量读取配置,方便命令行启动
// HOST 指目标地址
// PORT 服务端口
const { HOST = 'http://127.0.0.1:9090', PORT = '4000' } = process.env;

// 超时时间
const TIME_OUT = 30 * 1e3;

// 设置端口
app.set('port', PORT);

// 设置超时 返回超时响应
app.use(timeout(TIME_OUT));
app.use((req, res, next) => {
  if (!req.timedout) next();
});

// 静态页面
// 这里一般设置你的静态资源路径
app.use('/', express.static('./'));

// 反向代理(这里把需要进行反代的路径配置到这里即可)
// eg:将/api/test 代理到 ${HOST}/api/test
app.use(proxy('/api',
 { target: HOST,
   changeOrigin:true,
   pathRewrite:{
    "^/api":"/"
   }
 }));

// 监听端口
app.listen(app.get('port'), () => {
  console.log(`server running @${app.get('port')}`);
});

/*cookie登录*/

const express = require('express');
const timeout = require('connect-timeout');
const proxy = require('http-proxy-middleware');
//const httpProxy = require('http-proxy');
const app = express();

// 这里从环境变量读取配置,方便命令行启动
// HOST 指目标地址
// PORT 服务端口
const { HOST = 'http://172.31.165.104:8080', PORT = '3005' } = process.env;

// 超时时间
const TIME_OUT = 30 * 1e3;

// 设置端口
app.set('port', PORT);

// 设置超时 返回超时响应
app.use(timeout(TIME_OUT));
app.use((req, res, next) => {
  if (!req.timedout) next();
});

// 静态页面
// 这里一般设置你的静态资源路径
app.use('/', express.static('./'));

// 反向代理(这里把需要进行反代的路径配置到这里即可)
// eg:将/api/test 代理到 ${HOST}/api/test
/*代理配置*/
var options={
  target:HOST,
  changeOrigin: true,
  ws: true,
  pathRewrite: {
    '^/api/': '/api/', // rewrite path
  },
  //'^/api/remove/path': '/path' // remove base path
  router: {
    // when request.headers.host == 'dev.localhost:3000',
    // override target 'http://www.example.org' to 'http://localhost:8000'
    //'dev.localhost:3000': 'http://localhost:8000'
  },
  cookieDomainRewrite: {
  "*": ""
  }
}
app.use(proxy(options));
//app.use(proxy('/api/', { target: HOST}));


// 监听端口
app.listen(app.get('port'), () => {
  console.log(`server running @${app.get('port')}`);
});


分享本文至:

评论 0

挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论