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

Azure App Service中Docker-Compose+Nginx+Blazor SSL配置无限重定向求助

问题分析

无限重定向的核心原因是Blazor Server未正确识别来自Nginx的反向代理请求协议:

  • Nginx已将HTTPS请求转发给Blazor(内部走HTTP协议),并通过X-Forwarded-Proto传递了原始协议为https
  • 但Blazor未信任该反向代理,忽略了X-Forwarded-Proto头,仍认为当前请求是HTTP,因此触发重定向到HTTPS,形成循环
排查与解决方案

1. 完善Blazor的ForwardedHeaders配置

仅开启ForwardedHeaders枚举不够,需明确信任反向代理(Nginx及Azure App Service的ARR代理)。修改Program.cs中的配置:

builder.Services.Configure<ForwardedHeadersOptions>(options =>
{
    options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
    // 信任Docker容器默认网络段
    options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("172.17.0.0"), 16));
    // 信任Azure App Service的ARR代理常见IP段
    options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("13.107.6.152"), 32));
    options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("13.107.18.12"), 32));
    options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("13.107.64.0"), 18));
});

// 必须在构建应用后、其他中间件前启用ForwardedHeaders
var app = builder.Build();
app.UseForwardedHeaders();

同时在docker-compose.yml的azuretest-web服务中添加环境变量,强制启用转发头:

environment:
  # 保留原有环境变量,新增以下配置
  ASPNETCORE_FORWARDEDHEADERS_ENABLED: "true"

2. 优化Nginx配置

修正80端口重定向规则

避免在location块中使用if(Nginx中if存在逻辑隐患),直接在server块处理HTTP到HTTPS的重定向:

server {
    listen 80;
    server_name mydomainname.co.uk;
    # 全局重定向所有HTTP请求到HTTPS
    return 301 https://$server_name$request_uri;
}

验证HTTPS代理头配置

当前HTTPS server块中的proxy_set_header X-Forwarded-Proto $scheme;配置正确(Nginx处理SSL时$scheme值为https),无需修改。

3. 检查Azure App Service的SSL设置

  • 确认自定义域SSL绑定配置:若使用Nginx内置Let's Encrypt证书,需在Azure中选择SNI SSL绑定,并确保证书与Nginx中使用的一致
  • 禁用Azure自带的HTTPS重定向功能:在App Service的「设置 > TLS/SSL设置」中,关闭「强制HTTPS」,避免与Nginx的重定向规则冲突

4. 验证容器通信

  • 查看Nginx容器日志,确认是否能正常连接azuretest-web:8000
  • 查看Blazor容器日志,检查是否收到X-Forwarded-Proto: https请求头,确认重定向触发原因
本地与Azure环境差异说明

本地Docker Desktop无额外反向代理层,Blazor默认信任本地网络,能正确识别X-Forwarded-Proto头;而Azure环境存在ARR代理,必须显式配置信任该代理,Blazor才能正确处理转发的协议信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:20:23