【问题标题】:How to setup iisnode with express?如何使用 express 设置 iisnode?
【发布时间】:2017-10-26 23:51:36
【问题描述】:

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

【问题讨论】:

    标签: node.js express iisnode


    【解决方案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 上运行。将此网站指向您的 Nodejs api 可用的物理路径。

    第 4 步:提供对“IIS_IUSRS”组的节点 js api 文件夹访问权限。如果不提供访问权限,则会出现访问错误。

    第 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>

    第 6 步:在配置文件中添加 URL 重写规则。这是使 url 用户友好所必需的。否则您需要在 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>

    在重写部分之前,我使用 url http://localhost/nodesample1/server.js 调用我的应用程序

    重写后的url可以像

    http://localhost/nodesample1/api

    第 7 步:现在您需要更改 get call of express。您需要在获取呼叫中提供完整路径。 例如,在 IISNode 中托管应用程序之前,我的默认获取调用代码如下 sn-p

    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();
    });

    但是在 IISNode 托管之后,我不得不更改我的 get 调用,如下所示

    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();
    });
    因为我希望我的 url 像“http://localhost/nodesample1/api”,所以我必须在 get call 中提供完整的路径。

    就是这样。

    这种方法对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      • 2012-06-04
      • 1970-01-01
      • 2014-06-15
      • 2014-10-20
      • 1970-01-01
      相关资源
      最近更新 更多