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

django_tenants子域名无法解析问题排查求助

排查与解决步骤

1. 修复本地DNS解析(最常见原因)

demo.localhost无法解析且无请求记录,说明请求根本没发到Django服务器,这是本地DNS未将子域名指向127.0.0.1导致的:

  • 编辑hosts文件:
    • Windows:C:\Windows\System32\drivers\etc\hosts
    • macOS/Linux:/etc/hosts
    • 添加条目:127.0.0.1 demo.localhost
  • 刷新DNS缓存:
    • Windows:执行ipconfig /flushdns
    • macOS:执行sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
    • Linux:执行sudo systemctl restart systemd-resolved(不同发行版可能有差异)

2. 调整服务器绑定地址

你当前用localhost:8000启动服务器,仅监听127.0.0.1的请求,部分环境下子域名请求可能无法匹配这个绑定。改为监听所有接口:

python3 manage.py runserver 0.0.0.0:8000

之后再尝试访问demo.localhost:8000。

3. 验证租户域名配置

确保创建租户时的Domain对象配置正确:

  • 检查django_tenants_domain表中,domain_url字段为demo.localhost(不能带端口)
  • 用Django shell快速验证:
python3 manage.py shell
from django_tenants.models import Domain
for domain in Domain.objects.all():
    print(f"Domain: {domain.domain_url}, Tenant: {domain.tenant.name}")

确认输出包含demo.localhost对应的租户。

4. 日志排查方法

  • 浏览器端:按F12打开开发者工具→网络标签,访问子域名,查看请求状态:
    • 若显示DNS_PROBE_FINISHED_NXDOMAIN:DNS解析失败,回到步骤1
    • 若显示Connection refused:服务器未监听对应地址/端口,回到步骤2
  • Django端:在settings.py添加日志配置,捕获租户中间件的处理细节:
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {'console': {'class': 'logging.StreamHandler'}},
    'loggers': {
        'django_tenants': {'handlers': ['console'], 'level': 'DEBUG'},
        'django.request': {'handlers': ['console'], 'level': 'DEBUG'},
    }
}

重启服务器后,查看终端日志,确认请求是否进入Django,以及租户匹配过程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:42:04