如何使用 express 设置 iisnode?
How to setup iisnode with express?
我最近开始研究 nodejs。我创建了一个简单的 nodejs api(带有 express),它连接到 SQL 服务器数据库和 return 结果。在我开发之后,我遇到了如何托管这个节点 js api 的挑战。我决定在 IIS 上托管我的 api。我遇到了不同的错误,最后我能够让它工作。感谢互联网上的不同文章。
以下是我遵循的步骤。可能这可以帮助任何新手并尝试在 windows IIS 中托管 nodejs。
我最近开始研究 nodejs。我创建了一个简单的 nodejs api(带有 express),它连接到 SQL 服务器数据库和 return 结果。在我开发之后,我遇到了如何托管这个节点 js api 的挑战。我决定在 IIS 上托管我的 api。我遇到了不同的错误,最后我能够让它工作。感谢互联网上的不同文章。
以下是我遵循的步骤。可能这可以帮助任何新手并尝试在 windows IIS 中托管 nodejs。
第 1 步:安装 IISnode。确保 select 根据您的机器更正位版本。我使用的是 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
第七步:现在需要修改express的get调用。您需要在 get call 中提供完整路径。
例如,在 IISNode 中托管应用程序之前,我的默认获取调用代码如下片段
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 调用中提供完整路径。
就是这样。
这种方法对我有用。
我最近开始研究 nodejs。我创建了一个简单的 nodejs api(带有 express),它连接到 SQL 服务器数据库和 return 结果。在我开发之后,我遇到了如何托管这个节点 js api 的挑战。我决定在 IIS 上托管我的 api。我遇到了不同的错误,最后我能够让它工作。感谢互联网上的不同文章。 以下是我遵循的步骤。可能这可以帮助任何新手并尝试在 windows IIS 中托管 nodejs。
我最近开始研究 nodejs。我创建了一个简单的 nodejs api(带有 express),它连接到 SQL 服务器数据库和 return 结果。在我开发之后,我遇到了如何托管这个节点 js api 的挑战。我决定在 IIS 上托管我的 api。我遇到了不同的错误,最后我能够让它工作。感谢互联网上的不同文章。 以下是我遵循的步骤。可能这可以帮助任何新手并尝试在 windows IIS 中托管 nodejs。
第 1 步:安装 IISnode。确保 select 根据您的机器更正位版本。我使用的是 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
第七步:现在需要修改express的get调用。您需要在 get call 中提供完整路径。 例如,在 IISNode 中托管应用程序之前,我的默认获取调用代码如下片段
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();
});
就是这样。
这种方法对我有用。