不使用Azure Front Door为Azure AD B2C配置自定义域名的方案咨询
你的配置存在几个核心问题导致无法正常工作,调整方案如下:
核心问题排查
- Host请求头配置错误:你当前传递给b2clogin.com后端的Host是你自己的自定义域名
mydomain.com,Azure B2C的反向代理服务只识别xxx.b2clogin.com的Host头,会直接拒绝请求 - 页面内容替换逻辑不完整:默认
sub_filter仅替换text/html类型的内容,且不会处理gzip压缩的响应,导致大量JS、JSON、CSS中的域名没有被替换 - 缺少重定向响应处理:Azure B2C返回的3xx重定向响应中的Location头域名没有被替换,会直接跳转到b2clogin.com
- 缺少SNI支持配置:访问b2clogin.com需要启用SNI才能正常完成SSL握手
调整后的完整配置
server { listen 443 ssl http2; server_name mydomain.com; include /etc/nginx/snippets/server.conf; include /etc/nginx/snippets/ssl.conf; # Disabling cache by default set $no_cache 1; # IDP Conf location / { proxy_pass https://xxx.b2clogin.com/; proxy_cache_bypass $http_upgrade; # 启用SNI支持 proxy_ssl_server_name on; # 要求后端返回未压缩内容,方便替换域名 proxy_set_header Accept-Encoding ""; # Proxy headers proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # 修正Host头为B2C的官方域名 proxy_set_header Host xxx.b2clogin.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; # 替换重定向响应中的域名 proxy_redirect https://xxx.b2clogin.com/ https://$host/; # 替换Cookie域名 proxy_cookie_domain xxx.b2clogin.com $host; # 全局替换响应内容中的域名 sub_filter_once off; sub_filter_types text/html application/json application/javascript text/css text/xml application/x-javascript; sub_filter "xxx.b2clogin.com" $host; } }
额外配置注意事项
- 你需要提前在Azure AD B2C控制台将你的自定义域名
mydomain.com添加为受信任的域名,所有应用的重定向URI、登出URI都要修改为使用你的自定义域名 - 如果你使用了自定义用户流/策略,需要确认策略的签发者(issuer)配置兼容自定义域名,避免JWT校验失败
- 该方案仅适用于非生产环境测试,生产环境建议使用官方推荐的Azure Front Door方案避免兼容性问题
内容的提问来源于stack exchange,提问作者Baptiste Billy
相关产品推荐
相关产品推荐

