如何使用 Windows Server 2019 在 IIS 10 上托管 Node JS 应用程序

问题描述 投票:0回答:2

我已经配置了 iisnode 所需的所有内容。但是当我通过 http://localhost/Backend 浏览该网站(Backend 是托管在 iis 上的网站名称)时,什么也没有发生,页面继续加载。

我的web.config:

    <?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
        <add name="iisnode" path="index.js" verb="*" modules="iisnode" />
    </handlers>
    <rewrite>
        <rules>
                <rule name="nodejs">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" pattern="" ignoreCase="true" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/index.js" />
                </rule>
        </rules>
    </rewrite>
    <security>
    <requestFiltering>
        <hiddenSegments>
            <add segment="node_modules" />
        <add segment="iisnode" />
        </hiddenSegments>
    </requestFiltering>
    </security>
    </system.webServer>
</configuration>
node.js windows iis-10 iisnode
2个回答
1
投票

尝试通过预先设置将“应用程序池”->“空闲超时”设置为“0”,并检查具体问题是什么。确保您安装了 iisnode 模块。

iisnode模块表示index.js文件是一个由iisnode模块处理的node.js应用程序。

链接:

https://forums.asp.net/t/2145697.aspx?deploy+nodejs+web+api+in+IIS+服务器

https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/web.config


0
投票

我找不到使用iisnode的解决方案。无论如何,我觉得在 IIS 中运行 Node.js 很奇怪,这有点像尝试在 Android 上运行 iOS... 相反,我在 IIS 外部运行 Node.js,并在 IIS 中添加指向 Node.js 的反向代理。

以下是我遵循的步骤:

1.在服务器上安装应用程序请求路由 (ARR)

https://www.iis.net/downloads/microsoft/application-request-routing

2.在 AAR 配置中激活代理

连接 -> -> IIS -> 应用程序请求路由 -> 服务器代理设置 enter image description here enter image description here enter image description here

3.在服务器上安装node.js

https://nodejs.org/fr/download/package-manager

4.安装PM2

npm i -g pm2

使用pm2运行nodejs进程并保存

pm2 start index.js --name "MyNodejsService"
pm2 save
pm2 startup

在 web.config 上配置反向代理

就我而言,我有一个 React SPA 和一个 Nodejs api 我希望所有匹配 /api/* 的路由都指向nodejs,其余的指向React

这是我的网络配置

<?xml version="1.0"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="AuthNodeJS" stopProcessing="true">
                    <match url="(/?api/?.*)" />
                    <action type="Rewrite" url="http://localhost:3002/{R:1}" />
                </rule>
                <rule name="React Routes" stopProcessing="true">
                    <match url="^(?!/?api).*" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
    <location path="index.html">
        <system.webServer>
            <staticContent>
                <clientCache cacheControlMode="DisableCache" />
            </staticContent>
        </system.webServer>
    </location>
</configuration>
© www.soinside.com 2019 - 2024. All rights reserved.