Как справиться с NVM в производственных средах?
Я использую NVM для разработки веб-приложения Sails. Я установил узел v0. 12. 7, через NVM, и я использую эту версию для запуска веб-сайта.
nvm use 0.12.7
sails lift
Sails использует порт 1337 по умолчанию, но для производственной среды мы меняем его на 443. Проблема в том, что этот порт требует привилегий root, а NVM устанавливается только для одного пользователя. Поэтому, если я попробую sudo sails lift, я получу ошибку, говорящую, чтопаруса не установлены .
Каков наиболее эффективный способ борьбы с этот вопрос? Как я могу использовать NVM для разработки и развертывания своего проекта?
Я думал о различных возможных решениях, но я не знаю, хороши ли они или небезопасны.- переадресация портов с помощью
iptables
. Проблема с тем, что сокет не может работать через прокси. - изменение разрешений для порта. Это может быть угрозой безопасности, если у узла есть уязвимости.
- установите NVM с root. Проблема в том, что я использую NVM, чтобы избежать использования
sudo
для развертывания или запуска приложений, и это заставит меня сделать это.
Каковы наилучшие практики в этом контексте?
Заранее благодарю.
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/