apache - 对于在 Node.JS 上运行的 SaaS,是否需要 Web 服务器 (nginx) 或清漆作为反向代理?

标签 apache node.js nginx webserver reverse-proxy

对于在 Node.JS 上运行的 SaaS,是否需要 Web 服务器?

如果是,是哪一个以及为什么?

仅使用 Node 有什么缺点?它的作用是处理 CRUD 请求并返回 JSON 供客户端解析日期(如 Gmail)。

最佳答案

“是否需要网络服务器”?

从技术上讲,不。实际上,通常会使用单独的 Web 服务器,并且有充分的理由。

this talk by Ryan Dahl in May 2010 ,在 37'30"他表示,出于“安全原因”,他建议在反向代理或 Web 服务器后面运行 Node.js。详细说明一下,像 nginx 或 apache 这样的强化 Web 服务器的 TCP 堆栈已经发展了很长时间在稳定性和安全性方面,Node.js 还没有处于同一水平。因此,由于将 Node.js 放在 nginx 后面很容易,不会产生太多负面后果,并且理论上会在一定程度上提高部署的安全性,因此是一个不错的选择。在某个时间点,node.js 可能会被正式视为“准备好实时直接互联网连接”,但请等待 Ryan/Joyent 对此做出一些声明。

其次,绑定(bind)到 sub-1024 端口(如 80 和 443)需要进程是 root。 nginx 和其他自动处理作为 root 的绑定(bind),然后将权限删除到更安全的用户帐户(通常为 www-data 或无人)。尽管node.js在process模块中有系统调用包装器,可以使用setgidsetuid删除root权限,据我所知,除了自己在 Node 上编码之外社区还没有看到这样做的惯例。有关此主题的更多信息,请参阅 this discussion .

第三,Web 服务器擅长虚拟托管,通常您可以做一些方便的事情(URL 重写等),但需要在 Node.js 中进行自定义编码才能实现。

第四,nginx 非常擅长提供静态文件。比 node.js 好(至少现在好一点)。同样,随着时间的推移,这一点可能会变得越来越不相关,但在我看来,传统的静态文件 Web 服务器和 Web 应用程序服务器仍然具有不同的角色和目的。

“如果是,是哪一个以及为什么”?

nginx 。因为它的性能很好,而且配置比apache更简单。

关于apache - 对于在 Node.JS 上运行的 SaaS,是否需要 Web 服务器 (nginx) 或清漆作为反向代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6762068/

相关文章:

java - Apache FTP文件权限

php - 配置问题 : multi-domain auto SSL from LetsCncrypt using OpenResty & lua-resty-auto-ssl

apache - 无法在 Postman 中使用自签名证书

nginx - Rstudio和 Shiny 的服务器代理设置

Apache Mina FTP 服务器 SFTP 配置和连接 SFTP 连接使用 FileZiza 或 WInscp 或任何 ftp 客户端接管安全通道

apache - 我们可以将多个url指向tomcat中的同一个webapp吗

php 仅在受 shibboleth 保护的目录中不被解释

node.js - 带有 mongoose node.js 的时间序列文档?

javascript - npm install 模块提供了很多文件

node.js - NestJS 拦截器 - 处理 .pipe() 中的错误