Kestrel 是否足够用于 ALB 后面的 AWS ECS 上的 asp.net 核心网站 运行?
Is Kestrel sufficient for an asp.net core website running on AWS ECS behind an ALB?
我正准备将 ASP.NET 核心 MVC 网站部署到生产环境。该应用程序将部署到 AWS ECS(EC2 容器服务)。不建议使用 Kestrel 为来自 Internet 的流量提供服务,建议在前面使用反向代理。我的问题是 AWS ALB 够好吗?它执行 SSL 终止、负载平衡,并支持 HTTP/2 和 WebSocket。
我相信我要放弃压缩(据我所知,ALB 或 Kestrel 都不支持它)。此设置缺少什么?我是否应该查看额外的反向代理 (haproxy/nginx)?额外的复杂性足以让我不想走那条路,如果我不需要的话。
如果您不需要压缩(它具有较小的 SEO 优势),您就可以开始了。
关于您的 kestrel 应用程序,有几点需要注意,我相信您在将其置于引用代理之后时已经知道:
- 请求 url 的概念消失了:由于代理转发请求,因此请求 url 始终是代理本身。
- 此外,协议将始终是 http 而不是 https。
- 负载均衡器每次都会在应用程序之间切换,因此具有
static
属性的工作正常(工作不正常但您没有意识到)的事情现在可能会失败。
我能想到的 ALB 的缺点可能是您无法控制负载平衡的发生方式。如果这对您来说不是问题,那么我认为几乎任何反向代理都适合您。 (如果你愿意,你甚至可以在 nodejs 中做一个简单的反向代理)。
我正准备将 ASP.NET 核心 MVC 网站部署到生产环境。该应用程序将部署到 AWS ECS(EC2 容器服务)。不建议使用 Kestrel 为来自 Internet 的流量提供服务,建议在前面使用反向代理。我的问题是 AWS ALB 够好吗?它执行 SSL 终止、负载平衡,并支持 HTTP/2 和 WebSocket。
我相信我要放弃压缩(据我所知,ALB 或 Kestrel 都不支持它)。此设置缺少什么?我是否应该查看额外的反向代理 (haproxy/nginx)?额外的复杂性足以让我不想走那条路,如果我不需要的话。
如果您不需要压缩(它具有较小的 SEO 优势),您就可以开始了。
关于您的 kestrel 应用程序,有几点需要注意,我相信您在将其置于引用代理之后时已经知道:
- 请求 url 的概念消失了:由于代理转发请求,因此请求 url 始终是代理本身。
- 此外,协议将始终是 http 而不是 https。
- 负载均衡器每次都会在应用程序之间切换,因此具有
static
属性的工作正常(工作不正常但您没有意识到)的事情现在可能会失败。
我能想到的 ALB 的缺点可能是您无法控制负载平衡的发生方式。如果这对您来说不是问题,那么我认为几乎任何反向代理都适合您。 (如果你愿意,你甚至可以在 nodejs 中做一个简单的反向代理)。