在 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
- 不推荐 Windows 因为它自己的作者说它性能不佳:http://nginx.org/en/docs/windows.html
最后一个选项(可能最适合您的情况)是 运行 NodeJS on Windows 按原样使用 IIS 的应用程序请求路由 (ARR) 功能:
- ARR 使 IIS 能够充当(复杂的)反向代理(与 Linux 上的生命相反,其中
nginx
是 轻量级 反向代理代理)。看这里:https://www.iis.net/downloads/microsoft/application-request-routing with step-by-step instructions here: https://dev.to/petereysermans/hosting-a-node-js-application-on-windows-with-iis-as-reverse-proxy-397b
我想知道如何在 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 代码,那么这是一个有效的选项。请记住先禁用
- 运行NodeJS落后
HTTP.sys
iisnode
库的作者还为 NodeJS 编写了另一个名为httpsys
的库(因为 IIS 后面的 运行ning 使用了许多与 运行ning 相同的技术behindHTTP.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- 不推荐 Windows 因为它自己的作者说它性能不佳:http://nginx.org/en/docs/windows.html
最后一个选项(可能最适合您的情况)是 运行 NodeJS on Windows 按原样使用 IIS 的应用程序请求路由 (ARR) 功能:
- ARR 使 IIS 能够充当(复杂的)反向代理(与 Linux 上的生命相反,其中
nginx
是 轻量级 反向代理代理)。看这里:https://www.iis.net/downloads/microsoft/application-request-routing with step-by-step instructions here: https://dev.to/petereysermans/hosting-a-node-js-application-on-windows-with-iis-as-reverse-proxy-397b
- ARR 使 IIS 能够充当(复杂的)反向代理(与 Linux 上的生命相反,其中