Помучался я с этой панелью.
В общем встроенный обработчик NodeJS не подойдет, я попробовал способы, которые описал в своем вопросе и они не работают, а конкретней если в /domain будет отсутствовать nodejs приложение (package.json), то изменить NGINX конфиг ISPmanager вам просто не даст. Будет каждый раз выводится ошибка независимо оттого правильный nginx конфиг у вас или нет: "Поле '' имеет недопустимое значение".
+ Я так же попробовал у сгенерированного конфига изменить proxy_pass
location @fallback {
proxy_pass http://127.0.0.1:10000; # Изменил на свой порт 5000
}
В результате отредактировать конфиг нельзя по причиние: "Поле '' имеет недопустимое значение". И это в обоих случаях с сокетом и портом.
Я пытался обойти это и каким то образом получилось, но в консоли будут сыпаться ошибки каждый раз когда вы обращаетесь к своему сайту типа "не удалось найти файлы приложения nodejs и т п".
Решение:
Сразу говорю, что я не силен в linux и возможно какие-то пункты покажутся странными.
1. Выдаем через root аккаунт в панели "Shell клиент" аккаунту, который владеет сайтом. В моем случае это admin.
2. В качестве обработчика для сайта указываем: "Не используется"
3. Заходим в панель через аккаунт admin и выбираем "Shell-клиент". После нажатия на пункт у вас должна открыться консоль.
4. Устанавливаем nodejs (я установил через NVM) и pm2
5. Выполняем след.код для того чтобы занести эти настройки в .bashrc
echo 'export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"' >> ~/.bashrc
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm' >> ~/.bashrc
echo 'nvm use 18.13.0' >> ~/.bashrc
Обратите внимание, что на последней строке я указал свою версию nodejs, вы можете ее заменить на свою.
5. Выполняем подобный код только уже для pm2
echo 'pm2 startup' >> ~/.bashrc
6. Переходим в директорию вашего сайта (Например: cd www/domain) и устанавливаете свои приложения запуская их через pm2.
7. Возвращаемся в аккаунт root и переходим в раздел "Файл конифгурации" вашего сайта, где добавляем в существующий NGINX конфиг свои настройки.
В моем случае:
location / {
proxy_pass http://localhost:5000; # Порт на котором запускается node.js приложение
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /api {
proxy_pass http://localhost:6000; # Порт на котором запускается node.js приложение
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
Единственный минус это при каждой авторизаций в shell клиент нужно выполнять команду: source ~/.bashrc для того чтобы нам был доступен node и pm2