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

时间:2012-02-09 20:33:08

标签: http node.js nowjs-sockets

我最近开始开发一款多人浏览器游戏,它将使用nowjs来同步来自服务器状态的玩家状态。我是服务器端开发的新手(我说的很多东西可能都说不正确),虽然我理解node.js是如何工作的,但我已经看到了关于通过另一种服务器技术代理HTTP请求的讨论( la la NGinx或Apache)提高效率。

我不明白为什么这样做会有所帮助,尽管我已经看到了如何这样做的大量解释。我目前的计划是将游戏的网站和信息放在与游戏本身相同的服务器上,所以如果从代理节点获得任何收益,我很想知道原因。

3 个答案:

答案 0 :(得分:3)

在您的问题的上下文中,您似乎正在寻找在node.js网络服务器前面实现reverse proxy的好处的答案。总之,反向代理(取决于实现)可以提供开箱即用的以下功能:

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

所有这些功能都是cross-cutting concerns,您不应该在应用程序层/代码中使用这些功能。通过在代理中实现这些功能,它允许您专注于为您的应用程序开发代码,并让Web服务器做它擅长的事情,为您的应用程序提供HTTP请求。

nginx似乎是反向代理/节点配置中的常见选择,如果您查看modules reference,您应该了解代理可以提供哪些功能。

答案 1 :(得分:1)

当你说“通过其他技术”时,我认为你的意思是通过专用的网络服务器,如NGinx或Apache。

您这样做的原因是生产环境中的b / c,您不希望应用程序自行执行许多注意事项。缓存,域(或子域)映射,可能是安全性,SSL,负载平衡和服务静态文件等等。

Web服务器已经构建为您完成所有这些工作,因此他们可以处理它们,然后只将请求传递给您的应用程序实际需要由您的应用程序处理。他们还针对这些事情进行了优化,并且可能会比普通开发人员更好或更好。

希望有所帮助。

答案 2 :(得分:0)

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