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

在Windows 10和Windows Server 2012及更高版本上托管'node.js'应用程序的现代方式是什么?,node.js,iis,koa,Node.js,Iis,Koa,我想知道如何在Windows 10、Windows server 2012及更高版本上部署我的node.js应用程序(它使用Koa) 在互联网上,我看到了使用iisnode的老技巧,但与此同时,我看到人们担心开发人员无法回答许多重要问题(与iisnode相关),而且很长一段时间没有对iisnode代码源进行更改( 在Windows 10和Windows Server 2012及更高版本上托管node.js应用程序的现代方式是什么 如果能链接到这篇分步文章,我将不胜感激。有几种方法可以在Windo

我想知道如何在Windows 10、Windows server 2012及更高版本上部署我的
node.js
应用程序(它使用
Koa

在互联网上,我看到了使用
iisnode
的老技巧,但与此同时,我看到人们担心开发人员无法回答许多重要问题(与
iisnode
相关),而且很长一段时间没有对
iisnode
代码源进行更改(

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


如果能链接到这篇分步文章,我将不胜感激。

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

首先需要了解的是,Windows对名为
HTTP.sys
的HTTP服务器具有内置(内核模式!)支持,IIS和其他web服务器使用这些服务器来服务HTTP流量,而不是简单地在端口80上打开侦听套接字(这就是微软的IIS在20世纪90年代末的web服务器基准测试中击败Apache的方式)

你的选择是:

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

    • 虽然最初的
      iisnode
      被放弃,但微软实际上接管了所有权,并将其交给了似乎仍在积极维护的公司,而微软在维护它方面有着既得利益,因为微软希望在Azure上运行其应用程序,从世界上赚钱,而不管它们使用何种语言、平台或操作系统唱吧
  • 在Windows的
    nginx
    端口后运行NodeJS

    • 不建议在Windows上使用,因为其作者说它的性能很差:
  • 最后一个选项(可能是最适合您的情况)是按原样在Windows上运行NodeJS,并使用IIS的应用程序请求路由(ARR)功能:

    • ARR使IIS能够充当(复杂的)反向代理(与Linux上的life不同,在Linux上,
      nginx
      是一个轻量级的反向代理)。请参见此处:这里有逐步说明:

澄清一下,您是否在问如何在Windows上运行基于NodeJS的web服务器以满足生产工作负载?而不是在本地开发中运行它?答案是绝大多数生产NodeJS部署都在Linux或BSD变体上,并且它们不在Windows上运行-这解释了为什么没有太多可用的文档le@Dai,我想知道如何在windows server(用于生产)和windows 10(作为服务,不打开控制台窗口,如果可能的话)上部署我的
node.js
应用程序。这是在Windows上运行NodeJS的现代选项的一个很好的分类。我发现大多数东西都过时了或不适用于Windows。谢谢!还想知道PM2是否适合这个列表中的某个地方。哇,别提最后关于PM2的评论,我看到你发布的最后一个说明链接实际上使用了PM2。太好了!