是否已准备好用于asp.net核心应用程序生产的kestrel?

Hem*_*are 13 security iis kestrel asp.net-core

我在asp.net core 2.0中开发了我的角应用程序使用的api它已部署在IIS中并配置为使用kestrel.

我读过Kestrel在公开公开应用程序时不安全.真的吗?红隼还没准备好投入生产吗?或者,就像很少有博客对内部应用程序说的那样,干嘛用于不同的目的.

Zha*_*uid 10

是的,Kestrel已准备就绪,但如果您的应用程序可在公共网络上使用,Microsoft建议您将其与反向代理一起使用.

您可以在MSDN文档中找到有关托管ASP.NET Core 2.1应用程序的更多选项,包括在带有IIS的Windows上,在带有Nginx的Linux上以及带有Apache的Linux上.

使用反向代理有很多原因,包括:

  1. 在同一IP和端口上运行多个应用程序
  2. 限制暴露的表面积
  3. 附加层配置和防御
  4. 简化的负载平衡和SSL设置(例如,这些可以在反向代理处终止)
  5. 更好地支持静态文件,压缩等

根据您的要求,上述不同方面对您来说可能或多或少都很重要.

例如,Kestrel是一个非常轻量级的Web服务器,专门用于运行ASP.NET Core应用程序,但要做到这一点,它没有IIS或Apache之类的许多功能,您可能会发现它们.例如,处理静态文件(如图像,CSS或JS)不需要由ASP.NET Core引擎处理 - 使用IIS,您可以自动压缩这些文件并添加缓存头以加速后续页面加载.同样,在请求到达处理器之前,IIS可以处理重定向和路由.

从安全的角度来看,在请求到达Kestrel之前,您可以再次利用请求过滤(即使用的动词,路径等),IP过滤,身份验证等功能,而不必处理这些方面码.

需要注意的是,对于ASP.NET Core 1.x,文档更具体:

如果将应用程序公开到Internet,则必须使用IIS,Nginx或Apache作为反向代理服务器.反向代理服务器接收来自Internet的HTTP请求,并在进行一些初步处理后将它们转发给Kestrel.

  • 现在是 2021 年夏天,.NET 5.0 已发布。这个答案怎么变了?Kestrel 是否足够成熟,可以公开公开该应用程序? (3认同)
  • @贾斯汀 不多。它仍然处于生产就绪状态,并且支持暴露在互联网上,但它不支持,也不计划支持完整 Web 服务器的所有功能。 (2认同)