1

我最近开始开发一个多人浏览器游戏,它将使用nowjs从服务器状态同步玩家状态。我是服务器端开发的新手(我所说的很多事情可能都说错了),虽然我了解 node.js 如何独立工作,但我看到了有关通过另一种服务器技术代理 HTTP 请求的讨论( a la NGinx 或 Apache)以提高效率。

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

4

3 回答 3

3

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

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

所有这些功能都是横切关注点,您不需要在应用程序层/代码中提供这些功能。通过在代理中实现这些功能,您可以专注于为您的应用程序开发代码,而让 Web 服务器去做它擅长的事情,为您的应用程序提供 HTTP 请求。

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

于 2012-02-09T21:12:42.057 回答
1

当您说“通过另一种技术”时,我假设您的意思是通过专用的 Web 服务器,例如 NGinx 或 Apache。

您这样做的原因是在生产环境中使用 b/c,您不希望您的应用程序必须自己做一些考虑。缓存、域(或子域)映射、安全性、SSL、负载平衡和提供静态文件等等。

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

希望有帮助。

于 2012-02-09T20:52:25.000 回答
0

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

于 2012-02-10T15:51:25.263 回答