我正在使用 IIS 将 HTTP 请求反向代理到在同一台计算机上运行的 Nodejs 应用程序。
安装 URL 重写和 ARR 模块并检查代理设置。URL 匹配看起来不错:如果我更改规则,redirect
它就会按预期工作。使用时rewrite
出现 404 错误。
API 端点是api.url.com/getContent/ofertas
. IIS 站点根文件夹是W:\sites\LocalUser\site\api
.
我确信过去我在另一台具有类似 web.config 文件的计算机上进行了类似的设置。我过去使用 procmon 解决过问题(主要是关于 FTP),以下是我的发现:
rewrite
这些是我使用vs规则访问 URL 时的 procmon 日志redirect
。请注意,根据redirect
规则,web.config 文件已解析到正确的路径中。按照rewrite
规则,似乎无法解决。
除此之外,如果我正确解释错误描述,它看起来找不到合适的文件处理程序,因为没有设置。另外,通过查看“PhysicalPath”,它看起来好像请求了错误的路径,这由 procmon 日志支持是有意义的。
我在某处读到 URL 重写发生在处理程序映射情况之前,这是否意味着 URL 重写无法正常工作?接下来我该去哪里?
我真的需要解决这个问题,所以我再次检查了所有内容并检查了每个可能的 IIS 功能。
让我恼火的是知道 URL 重定向可以通过重定向规则起作用,但需要 ARR 才能起作用的重写却不起作用。
在检查“模块”功能时,我注意到有一个名为 URL 重写模块的条目
RewriteModule
,但没有一个条目暗示 ARR。我进入“操作”->“配置本机模块...”,那里有ApplicationRequestRouting
等待勾选的模块...我还按照这篇Microsoft 文章执行了步骤 3。我不认为它是解决方案的一部分,但我认为它值得一提。
我希望这可以帮助别人!