在 Windows 上使用 IIS 作为反向代理托管 Node.js 应用程序
不幸的是,很多公司仍然在使用 Windows 服务器。毕竟,没人会因为选择微软而被解雇,对吧?作为开发者,这确实令人沮丧,因为服务器技术的选择通常仅限于 ASP.NET。我曾尝试使用iisnode在 Windows 服务器上托管 Node.js 应用程序。但配置起来非常麻烦,设置正确的权限更是耗时费力。微软已经接管了该项目的开发,但我感觉它已经不再活跃了。在 Stack Overflow 上,有很多用户在配置过程中放弃了。
所以我考虑换个思路。如果我们使用 Node.js Web 服务器,然后用 IIS 作为反向代理将流量路由到 Node.js Web 服务器呢?这样我们就可以摆脱 iisnode,并有望获得一个更可靠的 Node.js Web 应用托管方案。
首先我们需要一个小的测试项目,这个名为“Hello World”的Node.js Express应用程序就可以了:
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
要运行此程序,您需要在服务器上安装 Node.js。安装完成后,您可以打开命令提示符并输入命令来运行测试应用程序node app.js。如果一切顺利,您现在应该可以通过http://localhost:3000本地服务器上的命令访问该测试应用程序。
要将IIS 配置为反向代理,您需要安装URL 重写扩展和应用程序请求路由扩展。URL 重写扩展允许您定义规则,从而生成更易于用户记忆和搜索引擎抓取的 URL。应用程序请求路由扩展则提供可扩展性功能,例如负载均衡、基于规则的路由等等。
安装完这些扩展程序后,即可开始配置 IIS。打开 Internet 信息服务 (IIS) 管理器,方法是打开“运行”窗口并输入命令inetmgr。选择要为其设置反向代理的站点,然后打开 URL 重写扩展程序。
添加新规则并选择Reverse Proxy模板。
当系统提示时启用代理功能。
将您的 node.js 网站地址添加到反向代理规则中,不要忘记包含端口号。
规则添加完毕后,反向代理配置即可生效。
最后一步是找到一种可靠的运行 Node.js 应用程序的方法。通过命令行启动并保持窗口打开并非长久之计。如果有人登录服务器并关闭窗口,网站就会宕机。pm2是一个 Node.js 进程管理器,可以用来保持应用程序运行。使用 npm 安装 pm2 非常简单:
npm install -g pm2
安装完成后,我们可以使用以下命令来管理我们的进程:
pm2 start app.js启动我们的 Node.js 应用程序pm2 stop停止正在运行的进程pm2 restart重新启动正在运行的进程pm2 list列出所有正在运行的进程
pm2 的功能远不止这些,更多信息请访问他们的网站。我自己的博客目前就是用这套方案运行的。
这是从我自己的博客转载的文章。
文章来源:https://dev.to/petereysermans/hosting-a-node-js-application-on-windows-with-iis-as-reverse-proxy-397b




