gpt4 book ai didi

node.js - 如何在 iisnode 中托管服务和静态内容

转载 作者:搜寻专家 更新时间:2023-10-31 22:54:18 25 4
gpt4 key购买 nike

我的网站在 express 中运行。但现在我需要在 IIS 上托管它。如何让我的路由与 IISNode 一起工作?

我能够将我的静态内容移动到/public 文件夹(html、前端 js 等)。我不想这样做,但让那部分工作了。

我将服务器端逻辑移至/server。

我以前使用 .Net Web API 样式的路由,我的服务托管在/api。我把它们移到了/server/api。

每当我尝试请求我的 API 时,我都会收到 404。我怎样才能让它与 IISNode 一起工作?

app.use("/api", require("./api"));

// routes/api/index.js
var router = require('express').Router();
router.use('/questionsets', require('./questionsets'));
module.exports = router;

var router = require('express').Router();
router.use('/questionsets', require('./questionsets.js'));
module.exports = router;

// routes/api/questions.js
var router = require('express').Router();

router.get('/', function (req, res) {
...
});

router.get('/:id', function (req, res) {
...
});

module.exports = router;


<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<hiddenSegments>
<remove segment="bin" />
</hiddenSegments>
</requestFiltering>
</security>
<handlers>
<add name="iisnode" path="bin/www" verb="*" modules="iisnode" />
</handlers>
<iisnode loggingEnabled="false" />
<httpErrors errorMode="Detailed" existingResponse="Replace">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/" responseMode="ExecuteURL" />
</httpErrors>
<rewrite>
<rules>
<rule name="LogFile" patternSyntax="ECMAScript" stopProcessing="true">
<match url="iisnode" />
</rule>
<rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
<match url="^bin\/www\/debug[\/]?" />
</rule>
<rule name="StaticContent" patternSyntax="ECMAScript" stopProcessing="true">
<match url=".*" />
<action type="Rewrite" url="{C:1}" logRewrittenUrl="true" />
<conditions>
<add input="{REQUEST_URI}" pattern=".*?\/(.*)" />
</conditions>
</rule>
<rule name="DynamicContent" patternSyntax="ECMAScript">
<match url=".*" />
<conditions>
<add input="{{REQUEST_FILENAME}}" matchType="IsFile" negate="True" />
</conditions>
<action type="Rewrite" url="server/app.js" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

Source for url rewriting configuration

最佳答案

您需要安装应用程序请求路由 here和文档 here .

简单地将服务器端文件放在/server 下是行不通的。启动您的快速服务器,假设正在收听 http://localhost:3200/ ,将请求“/”路由到“localhost:3200”只会将每个请求路由到您的快速服务器。

关于node.js - 如何在 iisnode 中托管服务和静态内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40351002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com