我已经配置了 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>
尝试通过预先设置将“应用程序池”->“空闲超时”设置为“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
我找不到使用iisnode的解决方案。无论如何,我觉得在 IIS 中运行 Node.js 很奇怪,这有点像尝试在 Android 上运行 iOS... 相反,我在 IIS 外部运行 Node.js,并在 IIS 中添加指向 Node.js 的反向代理。
以下是我遵循的步骤:
https://www.iis.net/downloads/microsoft/application-request-routing
连接 -> -> IIS -> 应用程序请求路由 -> 服务器代理设置
https://nodejs.org/fr/download/package-manager
npm i -g pm2
pm2 start index.js --name "MyNodejsService"
pm2 save
pm2 startup
就我而言,我有一个 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>