在一个域名下面,怎么部署多个Nodejs项目

在一个域名下面,怎么部署多个Nodejs项目

node会自己监听一个端口,但是我想在一个域名下面部署多个项目, 怎么办得到呢 比如: www.baidu.com/project1 项目1 www.baidu.com/priject2 项目2

15 回复

要在同一个域名下部署多个 Node.js 项目,通常可以通过使用反向代理服务器(如 Nginx 或 Apache)来实现。这样可以将不同的子路径映射到不同的后端服务。以下是一个详细的步骤和示例代码,帮助你实现这一目标。

步骤概述

  1. 安装和配置 Nginx:首先确保你的服务器上安装了 Nginx,并对其进行基本配置。
  2. 设置 Node.js 项目:确保每个 Node.js 项目都可以独立运行并监听不同的端口。
  3. 配置 Nginx 反向代理:通过 Nginx 将不同路径的请求转发到不同的 Node.js 项目。

示例代码

安装 Nginx

如果你还没有安装 Nginx,可以使用以下命令进行安装:

sudo apt update
sudo apt install nginx

配置 Nginx

编辑 Nginx 的配置文件 /etc/nginx/nginx.conf 或创建一个新的配置文件 /etc/nginx/sites-available/yourdomain

server {
    listen 80;
    server_name www.baidu.com;

    location /project1 {
        proxy_pass http://localhost:3000; # 项目1监听的端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /project2 {
        proxy_pass http://localhost:4000; # 项目2监听的端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

启动或重启 Nginx

保存配置文件后,重新加载 Nginx 以应用更改:

sudo systemctl reload nginx

配置 Node.js 项目

假设你有两个 Node.js 项目,分别运行在 http://localhost:3000http://localhost:4000

对于每个项目,你可以使用 Express 框架来启动服务。例如,项目1的 app.js 文件可能如下所示:

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

app.get('/', (req, res) => {
    res.send('Hello from Project 1!');
});

app.listen(3000, () => {
    console.log('Project 1 is running on port 3000');
});

同样地,项目2的 app.js 文件可能如下所示:

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

app.get('/', (req, res) => {
    res.send('Hello from Project 2!');
});

app.listen(4000, () => {
    console.log('Project 2 is running on port 4000');
});

总结

通过上述步骤,你可以在同一个域名 www.baidu.com 下部署多个 Node.js 项目,并通过不同的路径(如 /project1/project2)访问它们。使用 Nginx 作为反向代理服务器,可以轻松管理和路由这些请求。


只能建一个跳板网站了,收到请求,根据路径再发一个http获取目标项目返回浏览器

用 nginx 做個 reverse proxy 吧

对啊,fiddler也可以做反向代理

nginx 代理

nginx代理

谢谢各位,使用nginx已经解决。

NGINX反向代理

反向代理

这问题,明显的用反向代理嘛

多看看nginx会对你有帮助!

要在同一个域名下部署多个 Node.js 项目,可以使用反向代理服务器来将不同的路径映射到不同的项目。常见的反向代理服务器有 Nginx 和 Apache。这里我们以 Nginx 为例进行说明。

1. 安装 Nginx

首先需要安装 Nginx。在 Ubuntu 系统中可以使用以下命令:

sudo apt-get update
sudo apt-get install nginx

2. 配置 Nginx 反向代理

接下来,编辑 Nginx 的配置文件来设置反向代理规则。默认情况下,Nginx 的配置文件位于 /etc/nginx/nginx.conf/etc/nginx/sites-available/default

编辑配置文件(例如 /etc/nginx/sites-available/default)并添加如下内容:

server {
    listen 80;
    server_name www.baidu.com;

    location /project1/ {
        proxy_pass http://localhost:3001/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /project2/ {
        proxy_pass http://localhost:3002/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

3. 启动或重启 Nginx

保存配置文件后,需要重启 Nginx 以使更改生效:

sudo systemctl restart nginx

4. 运行 Node.js 项目

确保你的 Node.js 项目分别运行在 localhost:3001localhost:3002 上。例如,项目 1 可以使用以下命令启动:

cd /path/to/project1
node app.js --port=3001

项目 2 可以使用类似的方式启动:

cd /path/to/project2
node app.js --port=3002

通过上述步骤,你就可以在同一个域名 www.baidu.com 下访问两个不同的 Node.js 项目,分别通过路径 /project1/project2 访问。

这种方法不仅简单而且灵活,可以方便地扩展更多的项目。

回到顶部