我最近开始研究nodejs。我创建了一个简单的nodejs api(带express),它连接到SQL Server数据库并返回结果。在我的开发之后,我挑战了如何托管这个节点js api。我决定在IIS上托管我的api。我有不同的错误,最后我能够使它工作。感谢互联网上的不同文章。 以下是我遵循的步骤。可能这可以帮助任何新手并试图在Windows IIS中托管nodejs。
答案 0 :(得分:1)
我最近开始研究nodejs。我创建了一个简单的nodejs api(带express),它连接到SQL Server数据库并返回结果。在我的开发之后,我挑战了如何托管这个节点js api。我决定在IIS上托管我的api。我有不同的错误,最后我能够使它工作。感谢互联网上的不同文章。 以下是我遵循的步骤。可能这可以帮助任何新手并试图在Windows IIS中托管nodejs。
第1步:安装IISnode。确保根据您的机器选择正确的位版本。我正在使用Windows 10 64位。我安装了iisnode-full-v0.2.21-x64.msi https://github.com/azure/iisnode/wiki/iisnode-releases
第2步:安装URL重写模块 https://www.iis.net/downloads/microsoft/url-rewrite
步骤3:为了我的使用,我在IIS中创建了一个名为" Node Web Site"的新网站。此站点在端口90上运行。将此Web站点指向您的Nodejs api可用的物理路径。
步骤4:提供节点js api文件夹访问" IIS_IUSRS"组。如果不提供访问权限,您将收到访问错误。
步骤5:在节点js api文件夹中添加web.config文件。在配置文件中添加以下代码。这将告诉IIS,server.js将由IISnode处理。 注意:我的项目中只有一个文件(server.js)。如果你有多个文件,那么你可以在这里添加所有这些文件。
<configuration><system.webServer><handlers><add name="iisnode" path="server.js" verb="*" modules="iisnode" /></handlers>
</system.webServer></configuration>
&#13;
步骤6:在配置文件中添加URL重写规则。这是使网址用户友好所必需的。否则你需要在网址中提供.JS文件路径。下面是我在我的应用程序中的最终配置文件。
<configuration>
<system.webServer>
<handlers>
<add name="iisnode" path="server.js" verb="*" modules="iisnode" />
</handlers>
<rewrite>
<rules>
<rule name="api">
<match url="api/*" />
<action type="Rewrite" url="server.js" />
</rule>
</rules>
</rewrite>
<security>
<requestFiltering>
<hiddenSegments>
<add segment="node_modules" />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>
&#13;
在重写部分之前,我使用网址http://localhost/nodesample1/server.js
调用我的应用程序重写后url可以像
http://localhost/nodesample1/api
步骤7:现在您需要在快速接听电话中进行更改。你需要在接到电话中提供完整路径。 例如,在IISNode中托管应用程序之前,我的默认get调用代码就像下面的代码片段
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser());
app.get('/', function (request, response) {
response.write('running');
response.end();
});
&#13;
但是在IISNode托管之后我不得不改变我的下调电话
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser());
app.get('nodesample1/api', function (request, response) {
response.write('running');
response.end();
});
&#13;
那就是它。
这种方法对我有用。