Django /admin 重定向到 /usr/src/app/admin

Posted

技术标签:

【中文标题】Django /admin 重定向到 /usr/src/app/admin【英文标题】:Django /admin redirects to /usr/src/app/admin 【发布时间】:2018-05-08 00:33:30 【问题描述】:

我们的 Django 1.9.6 应用程序在 Docker 容器中运行。 docker 容器配置了 nginx 来提供静态文件。

我们链接到 /admin,它会将我们带到 /admin 页面,但是当我们单击链接时,它会将我们带到 /usr/src/app/admin/api/module/

我可以告诉你 Django 正在 /usr/src/app 目录中运行。

我们尝试将FORCE_SCRIPT_NAME='' 添加到设置中,但没有帮助。

Django 应用通过 Daphne 运行(因为我们使用的是 Channels)

这是我们的 nginx 配置:

server 
    listen      80 default_server;

    charset     utf-8;

    # max upload size
    client_max_body_size 4G;   

    # Django media
    location /media  
        alias /usr/src/app/media;  
    

    location /static 
        alias /usr/src/app/static-collect; - amend as required
    

    location / 
        proxy_pass http://0.0.0.0:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
    
`

【问题讨论】:

【参考方案1】:

问题不在于 nginx 或它的任何配置,而是我们启动 daphne 的方式

我们有 daphne --root-path=/usr/src/app -b 0.0.0.0 -p 8000 config.asgi:channel_layer -v2

在我们的脚本中启动 daphne。一个我们删除了--root-path=/usr/src/app 它一切都按预期工作。

daphne -b 0.0.0.0 -p 8000 config.asgi:channel_layer -v2

【讨论】:

以上是关于Django /admin 重定向到 /usr/src/app/admin的主要内容,如果未能解决你的问题,请参考以下文章

https://example.com/admin 在 Django Nginx 和 gunicorn 中重定向到 https://admin

django admin 在保存时重定向到错误的端口

使用 changelist_view 在 django admin 中重定向

多语言网站的 Django 重定向

Django Admin + FORCE_SCRIPT_NAME + 登录重定向错误

如何将 is_staff 用户重定向到 Django 中的自定义模板?