如果使用 Express 是否需要 nginx

Ora*_*nes 5 nginx express

我有一个在 Digital Ocean Droplet 上运行 Express 的 NodeJS Web 应用程序。nodeJs 应用程序提供后端 API。我有两个 React 前端,它们利用不同域的 API。前端可以托管在同一台服务器上,但我的开发人员告诉我应该使用另一台服务器来托管前端,例如 cloudflare。我读过,nginX 可以在同一台服务器上托管多个站点(即在同一台服务器上托管我的前端),但不确定这是否是一个好的做法,因为我可能无法使用 cloudflare。

在安全方面,有人可以告诉我是否需要 nginx,以及我的选择吗?

谢谢

ade*_*ago 2

这是一个过于开放式的问题,但我会尝试回答它:

\n
\n

在安全方面,有人可以告诉我是否需要 nginx,以及我的\n选项吗?

\n
\n

在这两种情况下您都需要 Nginx(或 Apache)。对于一台或多台服务器,无论是否使用 Express,Express 只是一个构建路由的应用程序框架,但您仍然需要一个能够响应网络请求的服务,这就是 Nginx 和 Apache 所做的。

\n

您可以避免使用 Nginx,但是您的用户必须直接向您启动 Express 的端口发出请求。例如:http://my-site.com: 3000/welcome 从安全角度考虑,你最好隐藏端口号并使用Nginx的反向代理,这样你的用户只需要浏览http:// my-site.com/welcome

\n
\n

我的开发人员告诉我应该使用另一台服务器来托管\n前端,例如 cloudflare

\n
\n

截至目前,Cloudflare 不提供托管服务。它确实提供 CDN 来托管一些文件,但不提供完整的站点。您将需要另一个 Digital Ocean 实例来执行此操作。在Cloudflare 的论坛帖子中,我发现:“Cloudflare 不是主机。Cloudflare\xe2\x80\x99s 基本服务是 DNS 提供商,您只需指向现有主机即可。”

\n
\n

我读到,nginX 可以在同一台服务器上托管多个站点\n

\n
\n

是的,Nginx(还有 Apache)可以托管多个具有不同名称或相同名称的站点,如域(www.my-backend.comwww.my-frontend.com)或子域(www.backend.my-site ) .comwww.my-site.com)在同一服务器中。

\n
\n

...但不确定这是否是好的做法

\n
\n

这绝对不是一个坏习惯,将应用程序分离到不同的子域上是很常见的。将它们保留在单独的服务器中的一些正当理由是:

\n
    \n
  • 因为您希望如果前端出现故障,后端 API 仍能继续工作。
  • \n
  • 因为你想平衡网络流量。
  • \n
  • 因为您只想将它​​们分开(微服务架构)。
  • \n
\n

从这些微服务中滥用(即获取 PI 值的微服务)将是一种不好的做法

\n