Как запустить 2 и более приложения в 1-ой папке домена?

Для запуска двух или более приложений в одной папке домена вам потребуется использовать проксирование запросов или обратный прокси-сервер c помощью Node.js.

Проксирование запросов позволяет передавать входящие запросы от клиента к различным серверам в зависимости от соответствующих путей или доменных имен. Это позволяет вам объединить все приложения в единое пространство и управлять ими централизованно.

Ниже приведен пример использования проксирования запросов с помощью модуля express и http-proxy-middleware.

1. Установите необходимые пакеты:

npm install express http-proxy-middleware --save

2. Создайте файл server.js с следующим содержимым:

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');

const app = express();

// Проксируем запросы к первому приложению
app.use('/app1', createProxyMiddleware({ target: 'http://localhost:3001', changeOrigin: true }));

// Проксируем запросы ко второму приложению
app.use('/app2', createProxyMiddleware({ target: 'http://localhost:3002', changeOrigin: true }));

// Запускаем сервер
app.listen(3000, () => {
  console.log('Сервер запущен на порту 3000');
});

В этом примере мы создаем экземпляр приложения express и настраиваем проксирование запросов с помощью модуля http-proxy-middleware. Прокси для каждого приложения настраивается с использованием метода createProxyMiddleware, где target указывает URL приложения, а changeOrigin позволяет изменять заголовок host для корректного маршрутизации запросов.

3. Создайте два отдельных файла app1.js и app2.js в корне вашей папке домена, в которых можно разместить код ваших приложений. Например, app1.js может содержать следующий код:

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

// Маршрутизация и логика вашего первого приложения
app.get('/', (req, res) => {
  res.send('Привет из первого приложения!');
});

app.listen(3001, () => {
  console.log('Первое приложение запущено на порту 3001');
});

А app2.js:

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

// Маршрутизация и логика вашего второго приложения
app.get('/', (req, res) => {
  res.send('Привет из второго приложения!');
});

app.listen(3002, () => {
  console.log('Второе приложение запущено на порту 3002');
});

Обратите внимание, что каждое приложение запускается на отдельном порту - 3001 и 3002 соответственно.

4. Запустите прокси-сервер, выполнив команду:

node server.js

5. Теперь вы можете обращаться к вашим приложениям, добавляя соответствующий путь в URL. Например, чтобы получить доступ к первому приложению, вы можете перейти по адресу http://localhost:3000/app1, а ко второму - http://localhost:3000/app2.

Таким образом, вы создали прокси-сервер, который проксирует запросы от клиента к двум или более приложениям в одной папке домена с помощью Node.js.