php - 如何保护 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 文件一样显示所有纯代码。
感谢期待任何帮助。
解决方案
要回答您的第一个问题,否。
您应该将应用程序部署到非公共文件夹,例如/opt/yourapplication
. 我将考虑创建一个yourapplicationuser
具有有限权限的用户,并使该用户成为您的应用程序文件夹的所有者。然后以该用户身份运行您的应用程序。
要回答第二个问题,没有什么需要保护的,因为 nodejs 应用程序不会共享目录及其文件,而是提供一个实际的 HTTP 服务器实现,它将侦听给定/配置端口上的传入请求。
共享80
PHP 和 NodeJS 应用程序的端口,我可以理解这是您的目标。您必须配置一个反向代理(可以是您的实际 httpd 服务器),该代理基于路由将流量重定向到侦听其他本地端口的 NodeJS 应用程序,即:8081
.
我认为本指南中反映的步骤可能会对您的旅程有所帮助。
推荐阅读
- reactjs - 在 API Put 中使用 GraphQL 结果
- angular - 图例的重复在 ng2 图表中产生
- javascript - Vue Component数据绑定中如何使用外部函数?
- java - 自定义 DozerConverter 仅在 SpringBoot 测试中调用
- python - 具有不同 y 轴和标题以及相同 x 轴的 3 x 2 子图
- android - 如何设置不同的工具栏并在片段中隐藏上一个工具栏
- python - 如何从树视图中删除选定的行,以及同时从列表中删除元组?
- java - org.apache.poi.ooxml.schemas 找不到 SchemaTypeSystemImpl
- html - 存储和运行 html 的手机应用程序
- alfresco - Alfresco 错误 alfresco.fileupload 不是构造函数