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

Azure App Service中Django应用添加自定义域名遇Bad Request(400)

解决Azure App Service中Django自定义域名Bad Request (400)问题

问题根源

Azure的WEBSITE_HOSTNAME环境变量仅包含默认的something.azurewebsites.net域名,自定义域名不会自动注入到该变量中,导致原配置仅允许默认域名访问,自定义域名因不在ALLOWED_HOSTS列表内被拒绝,触发400错误。

解决方案

方案1:手动硬编码自定义域名(适合域名固定的场景)

修改settings.py中的ALLOWED_HOSTS配置,同时保留默认域名的环境变量读取逻辑:

import os

# 获取Azure默认主机名
default_host = os.environ.get('WEBSITE_HOSTNAME', '')
# 替换为你的实际自定义域名,可添加多个
custom_domains = ['your-custom-domain.com', 'www.your-custom-domain.com']

ALLOWED_HOSTS = [default_host] + custom_domains if default_host else custom_domains

方案2:通过Azure应用设置动态读取自定义域名(适合域名需灵活调整的场景)

  1. 登录Azure门户,进入你的App Service -> 配置 -> 应用程序设置
  2. 添加新设置:
    • 名称:CUSTOM_HOSTS
    • 值:用逗号分隔你的自定义域名,例如your-custom-domain.com,www.your-custom-domain.com
  3. 修改settings.py中的配置:
import os

default_host = os.environ.get('WEBSITE_HOSTNAME', '')
# 读取自定义域名并分割成列表,过滤空值
custom_domains = [host.strip() for host in os.environ.get('CUSTOM_HOSTS', '').split(',') if host.strip()]

ALLOWED_HOSTS = [default_host] + custom_domains if default_host else custom_domains

方案3:临时允许所有域名(仅测试环境使用,禁止生产)

如果是测试场景,可临时设置允许所有域名,但生产环境存在安全风险,请勿使用:

ALLOWED_HOSTS = ['*']

验证步骤

修改配置后,重启Azure App Service使配置生效,访问自定义域名即可正常加载页面。可通过在settings.py中打印ALLOWED_HOSTS或查看应用日志,确认自定义域名已被加入允许列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:25:20