在 Windows 10 和 Windows Server 2012 及更新版本上托管“node.js”应用程序的现代方式是什么?

What is modern way to hosting `node.js` applications on Windows 10 and Windows Server 2012 and newer?

我想知道如何在 Windows 10、Windows 服务器 2012 和更新版本上部署我的 node.js 应用程序(它使用 Koa)。

在互联网上我看到了使用 iisnode 的旧提示,但同时我看到人们担心开发人员对许多重要问题(与 iisnode 相关)没有答案并且很长时间没有' 对 iisnode 代码源进行更改。 :(

在 Windows 10 和 Windows Server 2012 及更高版本上托管 node.js 应用程序的现代方式是什么?

我将不胜感激 link 一步一步的文章。

有几种方法可以 运行 Windows 上的 NodeJS 用于生产工作负载。

重要的是首先了解 Windows 内置(内核模式!)支持称为 HTTP.sys 的 HTTP 服务器,IIS 和其他网络服务器使用它来服务 HTTP 流量,而不是简单地在端口 80 上打开一个侦听套接字(这就是微软的 IIS 在 1990 年代后期在网络服务器基准测试中击败 Apache 的方式)。

您的选择是:

  • 直接将 NodeJS 暴露到端口 80/443
    • 这是最简单的方法,但有很多缺点。但是如果您不需要 运行 服务器上的不同的多个应用程序和非 NodeJS 代码,那么这是一个有效的选项。请记住先禁用 HTTP.sys
  • 运行NodeJS落后HTTP.sys
    • iisnode 库的作者还为 NodeJS 编写了另一个名为 httpsys 的库(因为 IIS 后面的 运行ning 使用了许多与 运行ning 相同的技术behind HTTP.sys): https://github.com/tjanczuk/httpsys - 不幸的是它已经过时了,但是它的代码确实不多,所以你可以自己破解它以使用最新版本的 Node。这是开源的要点之一! ("Don't complain, fix it!")
  • 运行 IIS 背后的 NodeJS 与 Microsoft 的分支 iisnode:

    • 虽然原来的 iisnode 被放弃了,但微软实际上接管了所有权并将其分叉给 https://github.com/Azure/iisnode,这似乎确实得到了积极维护 - 微软在维护它方面拥有既得利益,因为微软想要从全世界 运行 将其应用程序放在 Azure 上赚钱,无论他们使用何种语言、平台或 OS。
  • 运行 Windows

    nginx 端口后面的 NodeJS
  • 最后一个选项(可能最适合您的情况)是 运行 NodeJS on Windows 按原样使用 IIS 的应用程序请求路由 (ARR) 功能: