使用 Express 的基本 Hello World 示例
要使此示例正常工作,你需要在 IIS 主机上创建 IIS 7/8 应用程序,并将包含 Node.js Web App 的目录添加为物理目录。确保你的应用程序/应用程序池标识可以访问 Node.js 安装。此示例使用 Node.js 64 位安装。
项目结构
这是 IISNode / Node.js Web 应用程序的基本项目结构。除了添加 Web.config
之外,它看起来几乎与任何非 IISNode Web App 相同。
- /app_root
- package.json
- server.js
- Web.config
server.js - Express Application
const express = require('express');
const server = express();
// We need to get the port that IISNode passes into us
// using the PORT environment variable, if it isn't set use a default value
const port = process.env.PORT || 3000;
// Setup a route at the index of our app
server.get('/', (req, res) => {
return res.status(200).send('Hello World');
});
server.listen(port, () => {
console.log(`Listening on ${port}`);
});
配置和 Web.config
Web.config
就像任何其他 IIS Web.config
一样,除了必须存在以下两件事,URL <rewrite><rules>
和 IISNode <handler>
。这两个元素都是 <system.webServer>
元素的子元素。
组态
你可以使用 iisnode.yml
文件或在 Web.config
中添加 <iisnode>
元素作为 <system.webServer>
的子项来配置 IISNode。这两种配置都可以相互结合使用,但是在这种情况下,Web.config
需要指定 iisnode.yml
文件**,而且**任何配置冲突都将取自 iisnode.yml
文件 。这种配置覆盖不能以相反的方式发生。
IISNode 处理程序
为了让 IIS 知道 server.js
包含我们的 Node.js Web App,我们需要明确告诉它。我们可以通过将 IISNode <handler>
添加到 <handlers>
元素来实现。
<handlers>
<add name="iisnode" path="server.js" verb="*" modules="iisnode"/>
</handlers>
URL 重写规则
配置的最后一部分是确保进入我们的 IIS 实例的 Node.js 应用程序的流量被定向到 IISNode。如果没有 URL 重写规则,我们需要访问 http://<host>/server.js
访问我们的应用程序,更糟糕的是,当尝试请求 server.js
提供的资源时,你将获得一个知识。这就是 IISNode Web 应用程序需要 URL 重写的原因。
<rewrite>
<rules>
<!-- First we consider whether the incoming URL matches a physical file in the /public folder -->
<rule name="StaticContent" patternSyntax="Wildcard">
<action type="Rewrite" url="public/{R:0}" logRewrittenUrl="true"/>
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
</conditions>
<match url="*.*"/>
</rule>
<!-- All other URLs are mapped to the Node.js application entry point -->
<rule name="DynamicContent">
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
</conditions>
<action type="Rewrite" url="server.js"/>
</rule>
</rules>
</rewrite>
这是一个适用于此示例的 Web.config
文件 ,设置为 64 位 Node.js 安装。
就是这样,现在访问你的 IIS 站点并看到你的 Node.js 应用程序正常工作。