如何用express设置iisnode?

时间:2017-10-26 15:51:36

标签: node.js express iisnode

我最近开始研究nodejs。我创建了一个简单的nodejs api(带express),它连接到SQL Server数据库并返回结果。在我的开发之后,我挑战了如何托管这个节点js api。我决定在IIS上托管我的api。我有不同的错误,最后我能够使它工作。感谢互联网上的不同文章。 以下是我遵循的步骤。可能这可以帮助任何新手并试图在Windows IIS中托管nodejs。

1 个答案:

答案 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;
&#13;
&#13;

步骤6:在配置文件中添加URL重写规则。这是使网址用户友好所必需的。否则你需要在网址中提供.JS文件路径。下面是我在我的应用程序中的最终配置文件。

&#13;
&#13;
<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;
&#13;
&#13;

在重写部分之前,我使用网址http://localhost/nodesample1/server.js

调用我的应用程序

重写后url可以像

http://localhost/nodesample1/api

步骤7:现在您需要在快速接听电话中进行更改。你需要在接到电话中提供完整路径。 例如,在IISNode中托管应用程序之前,我的默认get调用代码就像下面的代码片段

&#13;
&#13;
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;
&#13;
&#13;

但是在IISNode托管之后我不得不改变我的下调电话

&#13;
&#13;
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;
&#13;
&#13; 因为我希望我想成为&#34; http://localhost/nodesample1/api&#34;我必须在接到电话时提供完整的路径。

那就是它。

这种方法对我有用。