Ani*_*nil 2 node.js express iisnode
我最近开始研究 nodejs。我创建了一个简单的 nodejs api(带有 express),它连接到 SQL 服务器数据库并返回结果。在我的开发之后,我遇到了如何托管这个节点 js api 的挑战。我决定在 IIS 上托管我的 api。我遇到了不同的错误,最后我能够让它工作。感谢互联网上的不同文章。以下是我遵循的步骤。可能这可以帮助任何新尝试在 Windows IIS 中托管 nodejs 的人。
Ani*_*nil 10
我最近开始研究 nodejs。我创建了一个简单的 nodejs api(带有 express),它连接到 SQL 服务器数据库并返回结果。在我的开发之后,我遇到了如何托管这个节点 js api 的挑战。我决定在 IIS 上托管我的 api。我遇到了不同的错误,最后我能够让它工作。感谢互联网上的不同文章。以下是我遵循的步骤。可能这可以帮助任何新尝试在 Windows IIS 中托管 nodejs 的人。
第一步:安装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 中创建了一个名为“节点网站”的新网站。此站点在端口 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>Run Code Online (Sandbox Code Playgroud)
第 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>Run Code Online (Sandbox Code Playgroud)
在重写部分之前,我使用 url http://localhost/nodesample1/server.js调用我的应用程序
重写url后可以像
http://localhost/nodesample1/api
第 7 步:现在您需要对 express 的 get call 进行更改。您需要在 get 调用中提供完整路径。例如,在 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();
});Run Code Online (Sandbox Code Playgroud)
但是在 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();
});Run Code Online (Sandbox Code Playgroud)
就是这样。
这种方法对我有用。
| 归档时间: |
|
| 查看次数: |
6272 次 |
| 最近记录: |