我有一个在 asp.net core 2.0 中开发的角度应用程序使用的 api
它已部署在 IIS 中并配置为使用 kestrel。
我读到 Kestrel 在公开公开应用程序时并不安全等等。
真的吗? Kestrel 还没有准备好用于生产吗?或 kestrel 完全用于不同的目的,就像很少有博客所说的内部应用程序一样。
Yes, Kestrel 已做好生产准备 https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-6.0并且受 .NET Core 支持的所有平台和版本支持,但如果您的应用程序可在公共网络上使用微软推荐 https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel/when-to-use-a-reverse-proxy?view=aspnetcore-6.0您将其与反向代理一起使用:
即使不需要反向代理服务器,使用反向代理服务器也可能是一个不错的选择。
您可以了解有关选项的更多信息在 MSDN 文档中,包括, and 除其他外。
使用反向代理的原因有很多,包括:
- 在同一 IP 和端口上运行多个应用程序
- 限制暴露的表面积
- 额外的配置和防御层
- 简化的负载平衡和 SSL 设置(例如,这些可以在反向代理处终止)
- 更好地支持静态文件、压缩等。
根据您的要求,上述不同方面对您来说可能或多或少重要。
例如,Kestrel 是非常轻量级的 Web 服务器,专门用于运行 ASP.NET Core 应用程序,但要做到这一点,它没有 IIS 或 Apache 之类的许多功能,而您可能会发现您需要这些功能。例如,处理图像、CSS 或 JS 等静态文件不需要由 ASP.NET Core 引擎处理 - 使用 IIS,您可以自动压缩这些文件并添加缓存标头以加快后续页面加载速度。同样,在请求到达处理器之前,IIS 可以处理重定向和路由。
从安全角度来看,您可以在请求到达 Kestrel 之前利用请求过滤(即使用的动词、路径等)、IP 过滤、身份验证等功能,而不必在您的系统中处理这些方面。代码。
值得注意的是,,文档更加具体:
如果将应用程序公开到 Internet,则必须使用 IIS、Nginx 或 Apache 作为反向代理服务器。反向代理服务器接收来自 Internet 的 HTTP 请求,并在进行一些初步处理后将它们转发到 Kestrel。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)