如果使用Express,是否需要nginx

xzlaal3s  于 2023-03-12  发布在  Nginx
关注(0)|答案(1)|浏览(201)

我有一个nodeJS网络应用程序,Express运行在Digital Ocean droplet上。nodeJs应用程序提供后端API。我有两个react前端,使用不同域的API。前端可以托管在同一台服务器上,但我的开发人员告诉我应该使用另一台服务器托管前端。比如cloudflare。我读到nginX可以在同一台服务器上托管多个站点(即在同一台服务器上托管我的前端),但不确定这是否是一个好的做法,因为我可能无法使用cloudflare。
在安全方面,有人能告诉我,如果我需要nginx,我的选择,请?
谢谢

i2byvkas

i2byvkas1#

这是一个过于开放式的问题,但我会尝试回答它:
在安全方面,有人能告诉我,如果我需要nginx,我的选择,请?

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

你可以避免使用Nginx,但是那样的话,你的用户就必须直接向你启动Express的端口发出请求。http://my-site.com:3000/welcome 从安全Angular 考虑,您最好隐藏端口号和use a Nginx's reverse proxy,这样您的用户只需浏览 http://my-site.com/welcome
我的开发人员告诉我应该使用另一台服务器来托管前端,例如cloudflare
Cloudflare目前还没有提供托管服务。它提供CDN来托管一些文件,但不是整个站点。你需要另一个Digital Ocean示例来做这件事。在一个Cloudflare's forum post中,我发现:* “Cloudflare不是主机。Cloudflare的基本服务是DNS提供程序,您只需在其中指向现有主机。"*
我了解到nginX可以在同一台服务器上托管多个站点
是的,Nginx(Apache也是)可以在同一台服务器上托管多个名称不同或相同的站点,作为域(www.my-backend.comwww.my-frontend.com)或子域(www.backend.my-site.comwww.my-site.com)。
...但不确定这是否是良好做法
这绝对不是一个坏的做法,在不同的子域上分开应用程序是很常见的。将它们放在不同的服务器上的一些合理的原因是:

  • 因为您希望在前端出现故障时后端API能够继续工作。
  • 因为您希望平衡网络流量。
  • 因为你只想让它们保持分离(微服务架构)。

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

相关问题