gpt4 book ai didi

php - 如何保护 Node App 免受直接访问和安装 Node 的正确方法

转载 作者:太空宇宙 更新时间:2023-11-04 10:05:13 25 4
gpt4 key购买 nike

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

我在 example.com 上有一个 VPS(Centos)和一个 php 网站。我想在我的 php 网站上运行一些 Node 应用程序,因此,我在我的根目录中安装了 Node.js。为了更好的理解,这里是目录结构

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

我的问题是

1) 在根目录下安装 Node 和所有 Node 模块的方式是否正确?如果没有,那么在哪里安装 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 文件一样显示所有纯代码。

期待任何帮助。

最佳答案

要回答您的第一个问题,

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

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

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

我认为this guide中反射(reflect)的步骤,可能会对您的旅程有所帮助。

关于php - 如何保护 Node App 免受直接访问和安装 Node 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53073306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com