gikami
@gikami
web программист

Как добавить сайт в nginx с помощью node js?

Есть сервер на node js.
Есть шаблон сайта.
Есть папки для каждого сайта и настройки nginx находится в одном файле conf.
Есть объект данных для нового сайта.

Как можно на node js:
1. Добавить новые конфигурации сайта в общий файл nginx conf.
2. Создать папку сайта.
3. Копировать шаблон сайта в новую папку.
4. Перезагрузить nginx сервер?

В целом данный функционал похож на конструктор сайтов, где клиент выбирает шаблон сайта и прикрепляет его к домену.

Возможно есть какие то готовые решения на node.js? В целом может кто-то встречал подобный функционал?
  • Вопрос задан
  • 167 просмотров
Пригласить эксперта
Ответы на вопрос 2
@holllop
Я бы рекомендовал сразу на Node.js поставить модуль fs в вашем вопросе не как без него.
Например
1. Добавить новые конфигурации сайта в общий файл nginx conf.
можно примерно таким образом.
const fs = require('fs');
const path = require('path');

const nginxConfPath = '/etc/nginx/nginx.conf'; // путь к вашему файлу nginx.conf

// Чтение содержимого nginx.conf
const nginxConfContent = fs.readFileSync(nginxConfPath, 'utf8');

// Дополнение новыми настройками
const newConfig = 
    server {
        listen 80;
        server_name example.com;
        location / {
            root /path/to/new/website;
            index index.html;
        }
    }
;

const updatedNginxConfContent = nginxConfContent + newConfig;

// Запись измененного содержимого обратно в файл nginx.conf
fs.writeFileSync(nginxConfPath, updatedNginxConfContent, 'utf8');

2. Создать папку сайта.

const newWebsitePath = '/path/to/new/website'; // путь к новой папке сайта

// Создание папки
fs.mkdirSync(newWebsitePath);

в остальном не очень уверен по этому наверное лучше не буду писать )
Ответ написан
AlexMcArrow
@AlexMcArrow
Люблю РНР, да я такой!
Можно попробовать NGINX Unit.
У него есть REST-api через который можно динамически создавать location.
Ну а в части создания папок и копирования файлов в nodejs дач этого есть возможность выполнять операции с файловой системой и/или выполнять консольные команды
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы