为什么要选择nginx部署前端

Swarm413
  • 68

是这样的,项目后端是Node.js,数据库是mongodb的
我想知道的是nginx是轻量级服务器,但是后端是express创建的web服务器,为什么用nginx部署前端呢,不用也可以啊
node.js本身就能处理高并发啊
这点感到疑惑

回复
阅读 2.2k
2 个回答

可以不用。
但是有个问题 node 是单线程语言.
你们是否需要启动多个node 用ng负载?
或者启用 ndoe cluster
不然你们服务器就太浪费了

很多人可能都有这个问题:在不需要负载均衡、不需要反向代理的情况下,那么还需要前面再套一层 nginx/Apache/IIS、而不是 HTTP 侦听程序直接对外提供服务,难道不应该少一层性能更高吗?

一般是有这么几点:

  • 充分利用多核优势。很多后端语言只支持单核(比如 Node.js、Python、PHP without Swoole),你也不想花钱租/买了个 16U 的主机、结果有 15U 都在旁观吧?
  • 提供更为强大和高性能的静态文件支持;纯 API 服务、无静态文件的可以忽略这点。
  • 增加缓冲层,避免瞬时请求击穿后端服务 ———— nginx 吞吐能到多少?你的程序吞吐又能到多少呢?
  • 将对外的 Socket 维持转交给更强大的一面来处理,尽量减轻“慢客户端行为”对后端服务的影响 ———— nginx 能维持的最大连接数是多少?你的程序能维持的最大连接数又能到多少呢?
  • 包含更齐全的可配置功能:多域名、SSL/HTTPS、HTTP/2、gzip、br、转发策略、访问日志等等。

当前最开始提到的负载均衡和反向代理其实也都是很重要的一点。

如果你没有上述的需求,或者有部分需求、但确实没什么访问量、且自己的程序已经足够满足,不再加一层 nginx 也是一种节省系统资源的方法。

但随着 k8s 等新兴的集群管理工具的兴起,对于容器化的应用来说,很多情况下确实也不再需要前面再套一层 nginx 了 ———— Ingress 都已经套过一层了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏