我正在使用 IIS 将 HTTP 请求反向代理到在同一台计算机上运行的 Nodejs 应用程序。
安装 URL 重写和 ARR 模块并检查代理设置。URL 匹配看起来不错:如果我更改重定向规则,它就会按预期工作。使用重写我收到 404 错误。
API 端点是api.url.com/getContent/ofertas
. IIS 站点根文件夹是W:\sites\LocalUser\site\api
. 这是web.config
文件。
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="UrlRewriteLocalhost" enabled="true" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://localhost:8801/{R:1}" />
</rule>
</rules>
</rewrite>
<defaultDocument>
<files>
<remove value="index.htm" />
<remove value="index.html" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
我确信过去我在另一台具有类似web.config
文件的机器上有类似的设置。我过去使用 procmon 解决过问题(主要是关于 FTP),以下是我的发现:
这些是我使用重写与重定向规则访问 URL 时的 procmon 日志。请注意,根据重定向规则,web.config
文件将解析到正确的路径(红色箭头)。使用重写规则似乎无法解析到正确的路径。
除此之外,如果我正确解释错误描述,它看起来找不到合适的文件处理程序,因为没有设置。另外,通过查看“PhysicalPath”,它看起来好像请求了错误的路径,这由 procmon 日志支持是有意义的。
我在某处读到 URL 重写发生在处理程序映射情况之前,这是否意味着 URL 重写无法正常工作?接下来我该去哪里?