何时将 Kestrel 与反向代理结合使用

注意

此版本不是本文的最新版本。 有关当前版本,请参阅本文.NET 9 版本。

警告

此版本的 ASP.NET Core 不再受支持。 有关详细信息,请参阅 .NET 和 .NET Core 支持策略。 对于当前版本,请参阅此文的 .NET 8 版本

重要

此信息与预发布产品相关,相应产品在商业发布之前可能会进行重大修改。 Microsoft 对此处提供的信息不提供任何明示或暗示的保证。

有关当前版本,请参阅本文.NET 9 版本。

Kestrel 可以单独使用,也可以与反向代理服务器一起使用。 反向代理服务器接收来自网络的 HTTP 请求,并将这些请求转发到 Kestrel。 反向代理服务器的示例包括:

Kestrel 用作边缘(面向 Internet)Web 服务器:

Kestrel 直接与 Internet 通信,不使用反向代理服务器

Kestrel 用于反向代理配置:

Kestrel 通过反向代理服务器(如 IIS、Nginx 或 Apache)间接与 Internet 进行通信

无论配置是否使用反向代理服务器,都是受支持的托管配置。

如果在没有反向代理服务器的情况下将 Kestrel 用作边缘服务器,则不支持在多个进程间共享相同的 IP 和端口。 如果将 Kestrel 配置为侦听某个端口,Kestrel 会处理该端口的所有流量(无视请求的 Host 标头)。 可以共享端口的反向代理能在唯一的 IP 和端口上将请求转发至 Kestrel。

即使不需要反向代理服务器,使用反向代理服务器可能也是个不错的选择。

反向代理:

  • 可以限制所承载的应用中的公开的公共外围应用。
  • 提供额外的配置层和深度防御网络安全。
  • 可以更好地与现有基础结构集成。
  • 简化了负载均衡和安全通信 (HTTPS) 配置。 只有反向代理服务器需要公共域的 X.509 证书。 该服务器可以使用普通 HTTP 或具有本地托管证书的 HTTPS 与内部网络上的应用服务器通信。 内部 HTTPS 可提高安全性,但也会大量增加开销。

警告

采用反向代理配置进行托管需要主机筛选

其他资源

配置 ASP.NET Core 以使用代理服务器和负载均衡器