Node.js 反向代理:使用 http-proxy-middleware 实现 API 转发

在开发过程中,我们可能需要将前端请求转发到不同的后端服务器。反向代理可以帮助我们实现这一功能。本文将介绍如何使用 http-proxy-middleware 库在 Node.js 项目中实现 API 转发,并提供代码示例。

反向代理配置

首先,我们需要在项目中安装 http-proxy-middleware 库:

npm install http-proxy-middleware

然后,我们可以创建一个配置文件,例如 proxyMiddleware.js,来定义反向代理规则:

const proxy = require('http-proxy-middleware');

module.exports = function (app) {
  app.use(
    proxy('/api1', {
      // 'api1' 是需要转发的请求(所有带有 '/api1' 前缀的请求都会转发给 5000)
      target: 'https://heimahr.itheima.net', // 配置转发目标地址(能返回数据的服务器地址)
      changeOrigin: true, // 控制服务器接收到的请求头中 host 字段的值
      /*
      	changeOrigin 设置为 true 时,服务器收到的请求头中的 host 为:localhost:5000
      	changeOrigin 设置为 false 时,服务器收到的请求头中的 host 为:localhost:3000
      	changeOrigin 默认值为 false,但我们一般将 changeOrigin 值设为 true
      */
      pathRewrite: { '^/api1': '' }, // 去除请求前缀,保证交给后台服务器的是正常请求地址(必须配置)
    })
    // proxy('/api2', {
    //   target: 'http://localhost:5001',
    //   changeOrigin: true,
    //   pathRewrite: {'^/api2': ''}
    // })
  );
}

项目入口文件引入配置

在项目的入口文件中,我们需要引入反向代理配置文件并将其应用到 express 应用程序中:

const express = require('express');
const app = express();

// 引入反向代理配置文件
const proxyMiddleware = require('./proxyMiddleware');

// 将 app 对象传递给反向代理配置文件
proxyMiddleware(app);

// 其他中间件和路由配置
// ...

// 启动服务器
app.listen(3000, () => {
  console.log('Server started on port 3000');
});

总结

通过以上步骤,我们就可以使用 http-proxy-middleware 库在 Node.js 项目中实现 API 转发。在配置文件中,我们可以配置多个反向代理规则,将不同类型的请求转发到不同的目标服务器。

注意:

  • 在配置文件中,target 属性指定了转发目标地址,changeOrigin 属性控制服务器接收到的请求头中 host 字段的值,pathRewrite 属性则用于去除请求前缀。
  • 在项目入口文件中,我们需要将 express 应用程序对象传递给反向代理配置文件,以便将代理规则应用到应用程序中。
  • 如果有多个反向代理配置,可以使用 app.use() 方法添加其他代理配置。
Node.js 反向代理:使用 http-proxy-middleware 实现 API 转发

原文地址: https://www.cveoy.top/t/topic/qB7e 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录