"Server" 对 IIS 后面的 Kestrel 的响应 header

"Server" response header for Kestrel behind IIS

如果我在 IIS 后面使用 UseIISIntegration 托管我的 Kestrel-based ASP.NET 核心网站,Server 响应 header 是否仍然说我正在使用红隼?因为好像是:

这是正确的行为吗?

简短回答:是的,它仍应报告由 Kestrel 托管的应用程序。

当您使用 IIS 托管 ASP.NET 核心应用程序时,您实际上是在使用 IIS 作为 Kestrel 的反向代理。这是 documentation:

推荐的方法

If you intend to deploy your application on a Windows server, you should run IIS as a reverse proxy server that manages and proxies requests to Kestrel.

传入的请求将首先由 IIS 处理,然后传递给 Kestrel,如下所示:

Web -> IIS -> ASP.NET 核心模块 -> Kestrel

所以说 Kestrel 是处理请求的服务器仍然是准确的。 IIS 只是坐在前面,帮助 Kestrel 处理传入的流量。如果您想确定该网站是否使用 IIS(这应该是默认设置),您可以检查该网站是否已设置并分配给 IIS 管理器中的应用程序池。

不完全是问题的答案,但由于 Google 给了我这个问题的相关答案,它可能会对某些人有所帮助:

要删除此 "server" header,已将一个选项添加到 Kestrel 启动选项中,因此在 program.cs 中您可以删除通过添加以下选项:

.UseKestrel(o => { o.AddServerHeader = false; })

Documentation(很差)