首页 > 解决方案 > 如何保护 Node App 免受直接访问和安装 Node 的正确方式

问题描述

对于 Node 专家来说,这可能是一个愚蠢的问题,但我现在很困惑。

我在 example.com 上有一个具有 (Centos) 的 VPS 和一个 php 网站。我想在我的 php 网站上运行一些 Node 应用程序,因此,我安装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在我的根目录中运行,但它无法运行,因为找不到我在 server.js 中需要的一些模块,如 socket.io。

2) 如何保护我的 Node 应用程序server.js?因为任何人都可以通过浏览器直接地址访问它,例如

 https://example.com/server.js

这将像普通的 javascript 文件一样显示所有纯代码。

感谢期待任何帮助。

标签: phpnode.jslinux

解决方案


要回答您的第一个问题,

您应该将应用程序部署到非公共文件夹,例如/opt/yourapplication. 我将考虑创建一个yourapplicationuser具有有限权限的用户,并使该用户成为您的应用程序文件夹的所有者。然后以该用户身份运行您的应用程序。

要回答第二个问题,没有什么需要保护的,因为 nodejs 应用程序不会共享目录及其文件,而是提供一个实际的 HTTP 服务器实现,它将侦听给定/配置端口上的传入请求。

共享80PHP 和 NodeJS 应用程序的端口,我可以理解这是您的目标。您必须配置一个反向代理(可以是您的实际 httpd 服务器),该代理基于路由将流量重定向到侦听其他本地端口的 NodeJS 应用程序,即:8081.

我认为本指南中反映的步骤可能会对您的旅程有所帮助。


推荐阅读