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

使用Kong网关时Django Admin页面重定向异常的解决咨询

解决Django Admin通过Kong网关重定向丢失前缀的问题

这个问题的核心是Django不知道自身运行在/python子路径下,生成重定向URL时会忽略该前缀;同时当前Kong的路由配置和Django的路径感知不匹配,导致跳转错误。以下是具体修复步骤:

1. 配置Django识别子路径

修改Django项目根目录下的settings.py,添加/调整以下配置:

# 告知Django所有URL的基础前缀
FORCE_SCRIPT_NAME = '/python'

# 确保登录后跳转回带前缀的admin页面
LOGIN_REDIRECT_URL = '/python/admin/'

# 允许访问的主机(根据实际环境调整)
ALLOWED_HOSTS = ['localhost', 'python-service']

2. 调整Kong路由配置

当前Route的strip_path=true会将请求中的/python前缀剥离后转发给Django,这和我们配置的FORCE_SCRIPT_NAME冲突。需要将strip_path改为false,让Kong完整转发请求路径给Django:

{
  "strip_path": false,
  "regex_priority": 0,
  "methods": null,
  "request_buffering": true,
  "response_buffering": true,
  "protocols": [
    "http",
    "https"
  ],
  "service": {
    "id": "8da72803-ffea-4424-a568-31faa3782a6d"
  },
  "https_redirect_status_code": 426,
  "tags": null,
  "paths": [
    "/python"
  ],
  "headers": null,
  "id": "2c1fb24a-21dd-42f5-9784-a3bf95c6f7dc",
  "path_handling": "v0",
  "created_at": 1711390464,
  "updated_at": 1711390464,
  "name": null,
  "snis": null,
  "sources": null,
  "hosts": null,
  "preserve_host": false,
  "destinations": null
}

3. 验证效果

重启Django服务并重新加载Kong配置后:

  • 访问localhost/python/admin时,Django会生成正确的重定向URLlocalhost/python/admin/login/?next=/python/admin/
  • 登录后将正常跳转至Admin后台页面

可选替代方案(不推荐)

如果无法修改Django配置,可使用Kong的Request Transformer Advanced插件,将响应中的重定向URL替换为带/python前缀的版本,但这种方式属于临时补丁,不如从根源配置Django和Kong的路径匹配来得可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:43:28