Как защитить приложение Node от прямого доступа и правильный способ установки Node

Это может показаться глупым вопросом для экспертов по Node, но на данный момент я сбит с толку.

У меня есть VPS с (Centos) и php-сайт example.com. Я хотел запустить какое-нибудь приложение Node вместе со своим php-сайтом, поэтому я установил Node.js в свой корневой каталог. Для лучшего понимания вот структура каталогов

public_html
    -> index.php
    -> style.css
    -> node 
         -> server.js
         -> node_modules
         -> package.lock.json 
         -> package.xml

Мои вопросы

1) Правильный ли способ установки узла и всех модулей узла в корневой каталог? Если нет, то где установить Node и его модули? Потому что я пытался установить Node и его модули (socket.io, express и т. д.) Из корневого каталога, как это

node 
    -> node_modules
    -> package.lock.json     
    -> package.xml
public_html
    -> index.php
    -> style.css
    -> server.js

а затем запустил node server.js, расположенный в моем корневом каталоге, но он не мог работать, потому что не были найдены некоторые модули, такие как socket.io, которые мне требовались в server.js.

2) Как я могу защитить свое приложение Node server.js? Потому что любой может получить к нему доступ через прямой адрес браузера, например.

 https://example.com/server.js

и это покажет весь простой код, как обычный файл javascript.

В ожидании благодарности за любую помощь.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
48
2

Ответы 2

Чтобы ответить на второй вопрос: вы можете защитить свой файл server.js, добавив его в свой robots.txt как запрещенный:

Disallow: /server.js

Я не думаю, что robot.txt используется для предотвращения доступа к какому-либо файлу, и это не цель robot.txt, кроме рекомендаций для поисковых роботов. Однако вы мне подсказали, что я могу запретить доступ с помощью .htaccess, как мне кажется. Еще не пробовал. Но снова мой вопрос остается, каков стандартный способ для самого приложения Node.

Airy 30.10.2018 23:02

Чтобы ответить на ваш первый вопрос, НЕТ.

Вы должны развернуть свое приложение в непубличной папке, например /opt/yourapplication. Я рассмотрю возможность создания пользователя yourapplicationuser с ограниченным набором прав и сделаю этого пользователя владельцем папки вашего приложения. Затем запустите ваше приложение от имени этого пользователя.

Чтобы ответить на второй вопрос, нечего защищать, поскольку приложение nodejs не будет совместно использовать каталог и его файлы, а вместо этого предоставит фактическую реализацию HTTP-сервера, который будет прослушивать входящие запросы на заданном / настроенном порту.

Ваша цель - предоставить общий доступ к порту 80 для приложений PHP и NodeJS, что, как я понимаю, является вашей целью. Вам нужно будет настроить обратный прокси-сервер (который может быть вашим фактическим httpd-сервером), который на основе маршрута перенаправляет трафик в приложение NodeJS, которое прослушивает другой локальный порт, например: 8081.

Я думаю, что шаги, отраженные в это руководство, могут помочь вам в вашем путешествии.

Ссылка, которую вы предоставили, действительно полезна. Спасибо

Airy 31.10.2018 13:58

Другие вопросы по теме