当前位置: 首页 > 面试题库 >

仅使用Node.js与将Node.js与Apache / Nginx结合使用

松阳泽
2023-03-14
问题内容

在哪种情况下,应该只在实际部署中将Node.js用作服务器?

当一个人 希望只使用Node.js的,有什么用Node.js的发挥更好?Apache还是Nginx?


问题答案:

将另一个Web服务器放在Node.js前面有几个充分的理由:

  • 不必担心Node.js进程的特权/ setuid。通常只有root可以绑定到端口80。如果让nginx / Apache担心以root身份启动,绑定到端口80,然后放弃其root特权,则意味着您的Node应用程序不必担心。
  • 提供图片,css,js和html等静态文件。与使用适当的静态文件Web服务器相比,Node的效率可能较低(Node在某些情况下也可能更快,但这不太可能成为常态)。除了可以更高效地提供文件之外,您不必担心像在Node之外提供服务时那样处理eTag或缓存控件标头。某些框架可以为您解决此问题,但是您需要确定。无论如何,仍然可能会更慢。
  • 正如Matt Sergeant在回答中提到的那样,如果您的节点服务崩溃,您可以更轻松地显示有意义的错误页面或退回到静态站点。否则,用户可能只会获得超时连接。
  • 在Node前面运行另一个Web服务器可能有助于减轻安全漏洞和针对Node的DoS攻击。对于一个实际示例,通过在Node前面运行Nginx之类的内容来防止CVE-2013-4450。

我要说明第二点,说您可能应该通过CDN或从类似Varnish的缓存服务器后面提供静态文件。如果执行此操作,则源是Node还是Nginx或Apache都没有关系。

请特别注意nginx:如果您使用的是websocket,请确保使用最新版本的nginx(> =
1.3.13),因为它仅添加了对升级升级以使用websocket的支持。



 类似资料:
  • 问题内容: 我有一些关于永久使用Node.js的问题,可能很琐碎。根据我的阅读,永远可以通过编程使用,并且它维护了一个列表,其中包含所有永远使用的脚本。该进程终止后,它会自动产生一个新的进程,直到停止为止。 但是,我的问题是,如何永远做到这一点?是否还会添加这些脚本以在启动时启动? 问题答案: 您可以像这样永久性地使用程序: 在node.js脚本中使用Forever实例: 您应该花一点时间阅读一下

  • 问题内容: 我正在尝试使用node.js制作Samsung Smart TV应用程序。 在我的项目中,我想使我的应用程序与服务器PC通信。 根据许多网站,我可以使用“ jsonp”来做到这一点。 这是我发现的客户端代码。 而且,这是我发现的服务器端代码。 这些代码在我的PC(服务器PC)上正常工作,但是当我在其他计算机上打开客户端页面时,它不起作用。 控制台只给我这个日志: 我想使用jsonp处理

  • 问题内容: 我使用Emacs 24.2。我已经安装并从MELPA执行,现在在REPL中而不是标志我有这个胡乱: 在低级Javascript模式下,REPL本身可以正常工作,只是符号已更改。如果输入未完成的表达式,它甚至会打印。该是字符的系统,不与复制-粘贴复制的,我加他们为你有一个想法。 在我的初始化文件中: 在终端呼叫中产生有效的REPL。 为什么提示会以这种方式表现?我该怎么做才能纠正这个问题

  • 问题内容: Node.js非常适合我们的Web项目,但是很少有需要Python的计算任务。我们已经为他们准备了Python代码。我们非常关心速度,如何以异步非阻塞方式从node.js调用Python“工人”的最优雅方法是什么? 问题答案: 对于node.js和Python服务器之间的通信,如果两个进程都在同一服务器上运行,则我将使用Unix套接字,否则将使用TCP / IP套接字。对于封送处理协议

  • 我的网站流量通过Cloudflare激活了完整的通用SSL。 在apache虚拟主机中,我有以下配置: 我的Node.js服务器通过HTTPS:

  • 问题内容: 我在SO上发现了其他几个有关JavaMail API和通过SMTP服务器发送邮件的问题,但是没有一个使用TLS安全性进行讨论。我正在尝试使用JavaMail通过我的工作SMTP邮件服务器向我发送状态更新,但是它需要TLS,而且我在网上找不到任何有关如何使用JavaMail访问需要TLS加密的SMTP服务器的示例。有人能帮忙吗? 问题答案: 实际上,我们的产品中确实有一些通知代码,如果有