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

时间:2018-04-24 09:21:44

标签: security iis asp.net-core kestrel

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

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

1 个答案:

答案 0 :(得分:7)

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

您可以在MSDN文档中找到有关hosting ASP.NET Core 2.1 apps选项的更多信息,包括on Windows with IISon Linux with Nginxon Linux with Apache等。

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

  1. 在同一IP和端口上运行多个应用程序
  2. 限制暴露的表面积
  3. 配置和防御的附加层
  4. 简化负载平衡和SSL设置(例如,可以在反向代理处终止)
  5. 更好地支持静态文件,压缩等。
  6. 根据您的要求,上述不同方面对您来说可能更重要或更不重要。

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

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

    值得注意的是for ASP.NET Core 1.x,文档更加具体:

      

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