使用node.js代理HTTP请求的价值

我最近开始开发一个多人游戏,将使用nowjs从服务器状态同步玩家状态。 我是服务器端开发的新手(我所说的很多事情可能被错误地说了),虽然我明白node.js是如何工作的,但我已经看到了通过另一种服务器技术来代理HTTP请求的讨论(一个拉NGINX或阿帕奇)效率。

我不明白为什么这样做会有好处,尽pipe我已经看到了很多关于如何这样做的解释。 我目前的计划是将游戏的网站和信息放在与游戏本身相同的服务器上,所以如果代理节点有任何收益,我很想知道为什么。

当你说“通过另一种技术”,我假定你的意思是通过一个专门的networking服务器,如NGinx或Apache。

你这样做的原因是生产环境中的B / C有许多你不希望你的应用程序必须自己做的考虑因素。 caching,域(或子域)映射,可能是安全性,SSL,负载平衡和提供静态文件等等。

Web服务器已经构build完成,可以为你处理所有这些事情,所以他们可以处理它们,然后只将请求传递给你的应用程序,实际上需要由你的应用程序处理。 他们也为做这些事情做了优化,可能会做得比一般的开发者还要好。

希望有所帮助。

在你的问题的上下文中,似乎你正在寻找在node.js webserver之前实现反向代理的好处的答案。 总之,反向代理(取决于实现)可以提供以下function:

  • 负载均衡
  • caching静态内容
  • 故障转移
  • 压缩响应(例如gzip)
  • SSL支持

所有这些function都是您应用程序层/代码中不需要考虑的交叉问题 。 通过在代理中实现这些function,它允许您专注于开发应用程序的代码,并使Web服务器执行其所擅长的function,为您的应用程序提供HTTP请求。

nginx似乎是反向代理/节点configuration中的常见select,如果您查看模块引用 ,则应该了解代理可以提供哪些function。

另一个人们没有在这里添加的问题是,使用前端代理,当你需要维护服务(甚至只是重新启动)时,nginx可以提供一个漂亮的“YourCompanyName正在维护中”页面,使用户体验更加愉快。