微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

子路径上的 Traefik 和 Django

如何解决子路径上的 Traefik 和 Django

以下设置我想在 Docker 中使用 Traefik 和 Django 实现:

  • http://domain/app1
  • http://domain/app2

我的 SRANDOM 包含以下容器标签

  • docker-compose.yml
  • traefik.http.routers.app1.rule=Host(`my.host.de`) && PathPrefix(`/app1`)
  • traefik.http.routers.app1.middlewares=app1

我对 traefik.http.middlewares.app1.headers.customresponseheaders.SCRIPT_NAME=/app1 做了同样的事情。

在我设置的两个应用程序的 app2 中:settings.py 然后应该通过我有 FORCE_SCRIPT_NAME = env('FORCE_SCRIPT_NAME',default=None) 的 ENV 文件解决

在 Django 方面,我总是收到 404 消息,提示这条路径不存在,我应该从现有路径中进行选择。

Django 将 URL 识别为 FORCE_SCRIPT_NAME=/app1 并告诉我 http://my.host.de/app1

编辑:由于我的设置被认为既适用于开发环境,也适用于生产环境,因此我使用 Django 内置服务器以及 Gunicorn 来运行 Django 应用程序。

解决方法

如果你想传递一个 SCRIPT_NAME 头给 django,你必须在创建中间件时使用 customrequestheaders 而不是 customresponseheaders

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。