gpt4 book ai didi

Django + Gunicorn + SCRIPT_NAME

转载 作者:行者123 更新时间:2023-12-02 20:07:30 26 4
gpt4 key购买 nike

我有许多 django 应用程序在同一域中运行,但在让 SCRIPT_NAME 与 Gunicorn 正常工作时遇到问题。

示例应用程序路径:

  • www.domain.com/app1
  • www.domain.com/demo

场景 1: 我目前在 Elastic Beanstalk 上运行每个应用程序,并修改 apache 配置来处理 SCRIPT_NAME 方面的事情。这有效。

场景2:我一直在使用AWS ECS/FARGATE进行测试,在该配置中我只有一个运行Django/Gunicorn的容器。没有 Apache/Nginx 等。我打算只使用 Django/Gunicorn/Whitenoise/Cloudfront。 这不起作用。使 django 使用子路径的 SCRIPT_NAME 值是重复的。

为了简化/排除故障,我在本地运行下面的代码/命令,因此不涉及 AWS。我还创建了一个简单的 django 应用程序用于测试。

我的应用页面结构是这样的:

  • 首页
    • 第1页链接<a href="{% url 'demo:page1' %}">Page1</a>
      • 首页链接 <a href="{% url 'demo:home' %}">Home</a>
    • 第2页链接<a href="{% url 'demo:page2' %}">Page2</a>
      • 首页链接 <a href="{% url 'demo:home' %}">Home</a>

步骤:

  1. 我启动网络服务器: gunicorn config.wsgi --env SCRIPT_NAME=demo -b 0.0.0.0:80 --keep-alive 20 --log-file=- --log-level debug --capture-output (它在 Docker 容器中运行)

  2. 我可以去http://127.0.0.0:8000/demo 。它按预期加载应用程序主页。

  3. Page1 链接显示为 http://127.0.0.0:8000/demo/page1 ,我单击,它按预期转到 Page1

  4. 首页链接显示为 http://127.0.0.0:8000/demo/demo/ 。它的 SCRIPT_NAME 重复,并且链接不起作用。

你知道我做错了什么吗?这是否意味着工作?

最佳答案

您需要在服务器启动命令行中将“SCRIPT_NAME=demo”替换为“SCRIPT_NAME=/demo”(注意附加斜杠)。

关于Django + Gunicorn + SCRIPT_NAME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54338420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com