使用node部署多个前端项目并实现后端接口转发

在 Node.js 服务器中部署前端文件,并且需要转发后端接口请求的情况下,可以使用代理服务器或中间件来实现接口的转发。可以使用 http-proxy-middleware 中间件来转发接口请求.

1. 安装 express

复制代码
npm install express

2.安装 http-proxy-middleware

复制代码
npm install http-proxy-middleware

3.创建一个 Node.js 服务器,使用 express 框架和 http-proxy-middleware 中间件

php 复制代码
const express = require('express');
const path = require('path');
const { createProxyMiddleware } = require('http-proxy-middleware');
​
const app = express();
const port = 3000;
​
// 静态文件目录,假设前端代码构建后的文件在 "dist" 目录中
app.use(express.static(path.join(__dirname, 'dist')));
​
// 设置代理,将以 "/api" 开头的请求转发到后端服务器
app.use('/api', createProxyMiddleware({ target: 'http://backend-api-server', changeOrigin: true }));
​
// 所有路由都返回 index.html,交由前端路由处理
app.get('*', (req, res) => {
  res.sendFile(path.join(__dirname, 'dist', 'index.html'));
});
​
// 启动服务器
app.listen(port, () => {
  console.log(`Server is running at http://localhost:${port}`);
});
​
  • express.static 中间件用于提供静态文件服务。
  • createProxyMiddleware 用于设置代理,将以 "/api" 开头的请求转发到后端 API 服务器。你需要将 'http://backend-api-server' 替换为实际的后端 API 地址。
  • 对于其他路由,都返回前端的 index.html,由前端路由处理。

4.部署多个前端工程

javascript 复制代码
const express = require('express');
const path = require('path');
const { createProxyMiddleware } = require('http-proxy-middleware');
​
const app1 = express();
const app2 = express();
const port = 3000;
​
// 静态文件目录,假设前端代码构建后的文件在各自的 "dist" 目录中
app1.use(express.static(path.join(__dirname, 'frontend1', 'dist')));
app2.use(express.static(path.join(__dirname, 'frontend2', 'dist')));
​
// 路由配置
app1.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'frontend1', 'dist', 'index.html'));
});
​
app2.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'frontend2', 'dist', 'index.html'));
});
​
// 设置代理,将以 "/api" 开头的请求转发到后端服务器
app.use('/api', createProxyMiddleware({ target: 'http://backend-api-server', changeOrigin: true }));
​
// 启动服务器
app1.listen(port + 1, () => {
  console.log(`Frontend 1 is running at http://localhost:${port + 1}`);
});
​
app2.listen(port + 2, () => {
  console.log(`Frontend 2 is running at http://localhost:${port + 2}`);
});
​

确保你的前端工程文件结构类似如下:

lua 复制代码
project-root
|-- frontend1
|   `-- dist
|       |-- index.html
|       |-- ...
|-- frontend2
|   `-- dist
|       |-- index.html
|       |-- ...
|-- server.js

5.在后台运行node服务

在 Linux 中,你可以使用 nohup 命令将 Node.js 服务在后台运行。

5.1 打开终端,进入到你的 Node.js 项目目录

5.2 运行以下命令

bash 复制代码
nohup node your_server_file.js &
  • your_server_file.js 是你的 Node.js 服务器入口文件。
  • nohup 是一个命令,用于使命令在后台运行,并忽略挂断信号。
  • & 表示将命令放到后台运行。

5.3 检查是否成功启动,可以查看 nohup.out 文件

bash 复制代码
cat nohup.out

这个文件会包含 Node.js 服务器的输出日志.

如果你希望后台运行的同时保存日志,可以使用 nohup 的输出重定向

bash 复制代码
nohup node your_server_file.js > your_log_file.log 2>&1 &

your_log_file.log 是你想要保存日志的文件名。

在生产环境中,可能需要使用更高级的工具来管理 Node.js 进程,例如 pm2pm2 提供了更多的功能,如进程守护、自动重启、性能监控等,可以更方便地管理 Node.js 应用。

6. 使用pm2来管理node应用

pm2 是一个强大的 Node.js 进程管理工具,它提供了许多有用的功能,如进程守护、自动重启、性能监控等.

6.1 安装 pm2

复制代码
npm install -g pm2

6.2 启动 Node.js 应用

sql 复制代码
pm2 start your_server_file.js

6.3 查看运行中的进程列表

复制代码
pm2 list

6.4 停止应用

arduino 复制代码
pm2 stop your_app_name_or_id

your_app_name_or_id 是你启动的应用的名称或 ID,可以在 pm2 list 中查看。

6.5 重启应用

复制代码
pm2 restart your_app_name_or_id

6.6 删除应用

arduino 复制代码
pm2 delete your_app_name_or_id

6.7 查看日志

复制代码
pm2 logs your_app_name_or_id

6.8 监控应用性能

复制代码
pm2 monit

这将打开一个监控界面,显示应用的 CPU 和内存使用情况。

6.9 自动启动

复制代码
pm2 startup

使用命令将应用设置为系统启动时自动启动

相关推荐
嘿嘻哈呀13 小时前
Node.js和包管理工具
node.js
winfredzhang14 小时前
构建自动化 Node.js 项目管理工具:从文件夹监控到一键联动运行
chrome·python·sqlite·node.js·端口·运行js
winfredzhang14 小时前
实战:从零构建一个支持屏幕录制与片段合并的视频管理系统 (Node.js + FFmpeg)
ffmpeg·node.js·音视频·录屏
shughui15 小时前
2026最新版Node.js下载安装、版本选择 及 环境配置教程(详细图文附安装包)
node.js
小李子呢021115 小时前
Node.js
开发语言·前端·学习·node.js
心.c15 小时前
文件上传 - 入门篇
前端·javascript·vue.js·node.js·js
xiaoxue..15 小时前
Nest.js 框架 企业级开发通关手册
面试·typescript·node.js·开发框架·nest.js
20年编程老鸟java+ai全栈1 天前
零基础搞定开发环境:PHP + Node.js + MongoDB + Python 一键安装全攻略
python·mongodb·node.js·php
ggaofeng2 天前
实践NPM打包和使用
前端·npm·node.js
1telescope2 天前
MacBook 安装 nvm 管理 Node.js 多版本教程
macos·node.js