【问题标题】:Traefik and Django on a Subpath子路径上的 Traefik 和 Django
【发布时间】:2021-07-01 19:48:13
【问题描述】:

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

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

我的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) 然后应该通过我有FORCE_SCRIPT_NAME=/app1 的ENV 文件解决。

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

Django 将 URL 识别为 http://my.host.de/app1 并告诉我 The current path, app1, didn't match any of these.

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

【问题讨论】:

    标签: django reverse-proxy traefik


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多