Kestrel 对于在 ALB 后面的 AWS ECS 上运行的 ASP.NET Core 网站是否足够?

Eri*_*k T 6 asp.net amazon-web-services amazon-ecs kestrel-http-server asp.net-core

我正准备将 ASP.NET Core MVC 网站部署到生产环境。该应用程序将部署到AWS ECS(EC2容器服务)。不建议使用 Kestrel 来处理来自互联网的流量,并且建议在前面放置一个反向代理。我的问题是,AWS ALB足够好吗?它执行 SSL 终止、负载平衡,并支持 HTTP/2 和 WebSocket。

我相信我正在放弃压缩(据我所知,ALB 或 Kestrel 都不支持它)。这个设置缺少什么?我应该考虑额外的反向代理(haproxy/nginx)吗?额外的复杂性已经足够了,如果没有必要的话,我不想走这条路。

Joe*_*kes 3

如果您不需要压缩(它对 SEO 优势较小),那么您就可以开始了。

关于您的 kestrel 应用程序,有一些需要注意的事项,我确信您在将其放置在引用代理后面时已经意识到了这些事项:

  • 请求 url 的概念消失了:由于代理转发请求,因此请求 url 始终是代理本身。
  • 此外,协议将始终是 http 而不是 https。
  • 负载均衡器每次都会在应用程序之间切换,因此那些运行良好(运行不佳但您没有意识到)的static属性现在可能会崩溃。

我可以想象 ALB 的缺点可能是您无法控制负载平衡的发生方式。如果这对您来说不是问题,那么我认为几乎任何反向代理都应该适合您。(如果你愿意的话,你甚至可以在nodejs中制作一个简单的反向代理)。