Как справиться с NVM в производственных средах?


Я использую NVM для разработки веб-приложения Sails. Я установил узел v0. 12. 7, через NVM, и я использую эту версию для запуска веб-сайта.

nvm use 0.12.7
sails lift

Sails использует порт 1337 по умолчанию, но для производственной среды мы меняем его на 443. Проблема в том, что этот порт требует привилегий root, а NVM устанавливается только для одного пользователя. Поэтому, если я попробую sudo sails lift, я получу ошибку, говорящую, чтопаруса не установлены .

Каков наиболее эффективный способ борьбы с этот вопрос? Как я могу использовать NVM для разработки и развертывания своего проекта?

Я думал о различных возможных решениях, но я не знаю, хороши ли они или небезопасны.
  1. переадресация портов с помощью iptables. Проблема с тем, что сокет не может работать через прокси.
  2. изменение разрешений для порта. Это может быть угрозой безопасности, если у узла есть уязвимости.
  3. установите NVM с root. Проблема в том, что я использую NVM, чтобы избежать использования sudo для развертывания или запуска приложений, и это заставит меня сделать это.

Каковы наилучшие практики в этом контексте?

Заранее благодарю.

2 3

2 ответа:

Я решил эту проблему, сделав следующее.

Я поменял владельца и группу узлов.

which node # gives a string with the path to node
sudo chown root:root path_to_node
sudo chmod u+s path_to_node

Таким образом, любой пользователь, выполняющий узел, будет делать это с правами владельца. И в этом случае владелец является root и его привилегий достаточно, чтобы использовать порты под 1024.

Что вы думаете об этом решении?

По соображениям безопасности не рекомендуется запускать NodeJS с правами суперпользователя.

Вы можете попробовать запустить приложение на порту, доступном для другого пользователя без привилегий root, а затем настроить обратный прокси-сервер с порта 443. Это то, что я сделал, используя nginx в качестве обратного прокси, который может быть легко настроен для выполнения этой задачи, а также обработки трафика SSL.

По этой ссылке вы можете найти дополнительную информацию о настройке nginx как reverse прокси, это из официальной документации: https://www.nginx.com/resources/admin-guide/reverse-proxy/