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

And*_*man 4 iis node.js koa

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

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

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

我将不胜感激链接到分步文章。

Dai*_*Dai 5

有几种方法可以在 Windows 上为生产工作负载运行 NodeJS。

首先要了解 Windows 具有内置(内核模式!)对 HTTP 服务器的支持HTTP.sys,IIS 和其他 Web 服务器使用它来提供 HTTP 流量,而不是简单地打开端口 80 上的侦听套接字(这就是 Microsoft 的 IIS 击败早在 1990 年代后期,Apache 在 Web 服务器基准测试中就被淘汰了)。

您的选择是:

  • 将 NodeJS 直接暴露给端口 80/443
    • 这是最简单的方法,但有许多缺点。但是如果您不需要在服务器上运行不同的多个应用程序和非 NodeJS 代码,那么这是一个有效的选择。请记住先禁用HTTP.sys
  • 在后面运行 NodeJS HTTP.sys
    • iisnode库的作者还编写了另一个名为httpsysNodeJS的库(因为在 IIS 后面运行使用了许多与在后面运行相同的技术HTTP.sys):https : //github.com/tjanczuk/httpsys - 不幸的是它已经过时了,但确实没有它没有太多代码,因此您可以自己破解它以使用最新版本的 Node.js。这是开源的要点之一!(“不要抱怨,解决它!”)
  • 使用 Microsoft 的 fork 在 IIS 后面运行 NodeJS iisnode

    • 虽然原始版本iisnode已被放弃,但微软实际上接管了所有权并将其分叉到https://github.com/Azure/iisnode似乎确实得到了积极维护 - 并且微软在维护它方面有既得利益,因为微软想从中赚钱无论他们使用何种语言、平台或操作系统,世界都在 Azure 上运行其应用程序。
  • nginxWindows 端口后面运行 NodeJS

  • 最后一个选择(可能是最适合您的情况)是在 Windows 上按原样运行 NodeJS 并使用 IIS 的应用程序请求路由 (ARR) 功能: