You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让AWS Fargate与Route53上的ASP.NET Web API接收HTTPS请求

AWS Fargate ASP.NET API HTTPS请求超时排查与解决

核心问题定位

你的ASP.NET Web API部署在AWS Fargate后,HTTP请求可正常访问但HTTPS请求超时,本地测试HTTPS正常,说明代码逻辑无问题,故障根源在AWS基础设施的HTTPS流量转发配置环节。

排查与修复步骤

1. 检查应用负载均衡(ALB)的HTTPS监听配置

  • 确认ALB已创建443端口的HTTPS监听:
    • 监听必须关联AWS Certificate Manager(ACM)中覆盖api.maxiterations.com的有效证书,且证书与ALB处于同一AWS区域。
    • 监听绑定的目标组需正确指向Fargate服务的容器端口(例如容器暴露的80/5000端口)。
  • 检查目标组健康状态:若目标组显示不健康,ALB不会将流量转发到Fargate容器,需确保健康检查路径(如你的/健康检查端点)能稳定返回200状态码。

2. 验证安全组规则

  • ALB安全组:需允许入站443/TCP流量(可设置为0.0.0.0/0或限定特定访问IP范围),同时允许出站流量到Fargate任务的容器端口。
  • Fargate任务安全组:需允许来自ALB安全组的入站流量(对应容器暴露的端口,如80/TCP),出站规则需允许必要的网络访问(如访问AWS服务或互联网)。

3. 确认Route53域名配置

  • 确保api.maxiterations.com的DNS记录为别名记录,指向ALB的公共DNS名称,不可直接绑定Fargate任务IP(Fargate任务IP为动态分配,无法固定)。
  • 若刚修改过DNS配置,需等待TTL设置的缓存时间生效。

4. 验证ACM证书状态

  • 登录ACM控制台,确认对应证书状态为已颁发,且通过DNS验证(Route53自动添加的CNAME验证记录需存在且未被删除)。

5. 修正ASP.NET的HTTPS识别逻辑

由于ALB会执行SSL终止,转发到Fargate容器的是HTTP请求,代码中context.Request.IsHttps会返回false,导致非健康检查请求被拦截。需添加转发头中间件让ASP.NET识别原请求的HTTPS协议:
在Program.cs中添加以下代码(需放在其他中间件之前):

app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});

若ALB的IP范围固定,可额外配置KnownProxies或KnownNetworks避免伪造头攻击。

排查顺序建议

优先检查ALB监听和安全组配置(这是HTTPS超时最常见的诱因),再验证证书和Route53记录,最后调整ASP.NET的转发头配置。

内容的提问来源于stack exchange,提问作者user26397514

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 16:40:17