一个月前我开始学习服务器端编程,我用 'express' 框架和 mssql 构建了一个 nodejs 项目和 web 服务,其中包含一个 "main.js" 文件和一个 "node_modules" 文件夹。
我想在 IIS 上托管这个项目,但是我不知道该如何操作,也没有相关的经验。
我需要对我的项目进行某种打包吗?
我能否在 IIS 上托管 nodejs 项目?如果可以,那么我需要执行哪些步骤呢?我有一个运行着 mysql 的 Windows 服务器。
一个月前我开始学习服务器端编程,我用 'express' 框架和 mssql 构建了一个 nodejs 项目和 web 服务,其中包含一个 "main.js" 文件和一个 "node_modules" 文件夹。
我想在 IIS 上托管这个项目,但是我不知道该如何操作,也没有相关的经验。
我需要对我的项目进行某种打包吗?
我能否在 IIS 上托管 nodejs 项目?如果可以,那么我需要执行哪些步骤呢?我有一个运行着 mysql 的 Windows 服务器。
这里是一步一步的说明...
var express = require("express");
var app = express();
app.get("/", function(req, res) {
res.send("Hello Worlxxxxd!");
});
// This is REQUIRED for IISNODE to work
app.listen(process.env.PORT, () => {
console.log("listening");
});
在目录中添加一个 web.config 文件,并在其中放置以下代码。<configuration>
<system.webServer>
<handlers>
<add name="iisnode" path="node_app.js" verb="*" modules="iisnode" />
</handlers>
<rewrite>
<rules>
<rule name="nodejs">
<match url="(.*)" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="/node_app.js" />
</rule>
</rules>
</rewrite>
<security>
<requestFiltering>
<hiddenSegments>
<add segment="node_modules" />
<add segment="iisnode" />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>
我建议使用URL重写(https://www.iis.net/downloads/microsoft/url-rewrite)和应用程序请求路由(https://www.iis.net/downloads/microsoft/application-request-routing)IIS模块。在托管IIS的服务器上安装这些模块。
在IIS中创建一个应用程序,指向您的Node应用程序运行的目录(尽管实际上不使用此路径!):
在这个新的应用程序中,使用反向代理模板创建一个重写规则,并指向您本地提供的Node.js应用程序:
现在,您可以通过配置的IIS应用程序浏览到托管在IIS上的站点,并显示您的Node.js托管站点:
这种方法的主要好处之一是,发给IIS的SSL证书可以与“http”托管的node.js应用程序一起使用。
我已经在命令行中运行了node.js,但如果需要的话,这也可以作为一个服务来完成。