仅使用Node.js与将Apache.Nginx与Node.js结合使用 [英] Using Node.js only vs. using Node.js with Apache/Nginx

查看:96
本文介绍了仅使用Node.js与将Apache.Nginx与Node.js结合使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在什么情况下,人们更喜欢只在实际部署中将Node.js用作服务器?

In what cases should one prefer to use Node.js only as a server in real deployment?

不希望仅使用Node.js时,Node.js会更好地发挥作用吗?是Apache还是Nginx?

When one does not want to use Node.js only, what plays better with Node.js? Apache or Nginx?

推荐答案

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

There are several good reasons to stick another webserver in front of 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攻击.对于真实示例, CVE-2013-4450 阻止者在Node前面运行类似Nginx的东西.

我要指出的第二点是,您可能应该通过CDN或从类似Varnish的缓存服务器后面来提供静态文件.如果您这样做的话,源是Node还是Nginx还是Apache都没关系.

I'll caveat the second bullet point by saying you should probably be serving your static files via a CDN, or from behind a caching server like Varnish. If you're doing this it doesn't really matter if the origin is Node or Nginx or Apache.

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

Caveat with nginx specifically: if you're using websockets, make sure to use a recent version of nginx (>= 1.3.13), since it only just added support for upgrading a connection to use websockets.

这篇关于仅使用Node.js与将Apache.Nginx与Node.js结合使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆