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

如何修复自定义域名下Kestrel托管HTTPS ASP.NET Core 6应用的Ingress问题

问题分析与解决

核心问题

你的ASP.NET Core容器内部监听HTTPS 5001端口,但Azure Container Apps的Ingress配置里transport设为了Http——这意味着Ingress会用HTTP协议去连接容器的HTTPS端口,协议不匹配直接导致连接终止,出现upstream connect error。

解决方案

方案1:调整Ingress传输协议匹配容器HTTPS

把Ingress配置中的"transport": "Http"改成以下两种之一:

  • 用Http2传输(适配HTTP/2协议的HTTPS服务):
    "transport": "Http2"
    
  • 用Tcp传输(纯TCP转发,直接传递HTTPS流量到容器):
    "transport": "Tcp"
    

修改后重新部署Ingress配置,测试自定义域名访问。

方案2:容器改用HTTP监听,Ingress处理外部HTTPS(更简洁)

如果不需要容器内部强制HTTPS,可以简化配置:

  1. 修改Dockerfile,移除HTTPS相关配置,改用HTTP监听:
    FROM mcr.microsoft.com/dotnet/aspnet:6.0
    
    ENV ASPNETCORE_ENVIRONMENT=Development
    # 删除Kestrel证书相关环境变量
    ENV ASPNETCORE_URLS=http://0.0.0.0:5001
    
    EXPOSE 5001
    
    WORKDIR /mnt/nextgen/ERP
    
    CMD ["dotnet", "/mnt/nextgen/ERP/runtime/bin/cmNG.web.dll"]
    
  2. 保持Ingress配置的"transport": "Http"和allowInsecure: false——Ingress会自动将外部HTTPS请求转发为HTTP请求到容器内部。

额外验证点

  • 确认容器内的PFX证书路径/mnt/nextgen/ERP/https/cmng-erp.9knots.nl.pfx存在且权限正常(日志未报证书加载错误的话,此部分大概率无问题)。
  • 自定义域名绑定的证书与容器内证书无需一致(Ingress和容器的HTTPS是独立两层),但要确保Ingress的证书已正确关联到自定义域名。

内容的提问来源于stack exchange,提问作者Matthijs van Zetten

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:18:12