设置 IIS 反向代理以保留主机头

设置 IIS 反向代理以保留主机头

我有一台 IIS 服务器,它托管着许多站点和 API。这些站点包括 Confluence 和 Jira 实例。这些产品实际上运行着自己的 Web 服务器,因此应用程序请求路由和 URL 重写模块用于将传入请求反向代理到documents.example.com' and 'jira.example.com' tolocalhost:8080 andlocalhost:8090` - confluence 和 jira 实例正在运行的地方。

现在,我正在尝试设置一个小型简单存储服务器(s3)api(minio)的反向代理 - 托管在localhost:9000上 - 但s3协议要求主机头是其消息认证代码的一部分。

但是,当应用程序请求路由根据 URL 重写规则重新路由请求时,它也会重写主机标头以反映新的目标标头。

可以通过设置禁用此功能system.webServer.proxy:preserveHostHeaders,但只能在 ApplicationHost.config 中禁用,因为 ARR 在服务器而不是站点级别运行。

所以现在我有一个难题:

如果我设置此设置,那么在其 MAC 中使用主机标头的 REST API 可以运行,但 Confluence 和 Jira 作为其支持的反向代理配置需要重写主机标头。

作为参考,此设置允许保留主机头

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost

答案1

我也遇到了同样的问题。我有一个解决方案,我不喜欢它(我敢打赌你也不会喜欢它),但它确实有效。

如果启用preserveHostHeaders,则可以添加出站URL重写规则,以重新映射以下所有情况:想要替换主机头。

相关内容