Ian*_*ski 5 python django nginx
我有 django 应用程序在 subpath 中运行example.com/api/。大部分是rest API(我使用django-rest-framework),所有请求都正常工作。但是静态文件到处都有错误的路径 - 在管理面板和请求页面中(在 django-rest-framework 中,你有前端来调查事情)。Django 以某种方式认为,当所有静态文件example.com/back/static/位于example.com/api/back/static/.
也example.com/api/admin重定向到example.com/admin/login/,但手动转到后example.com/api/admin/login/一切工作顺利(但仍然没有样式)。
我的堆栈是在 docker 容器中运行的 nginx + Django 2.0.5。
Nginx 配置:
location /api/ {
proxy_pass http://localhost:8000/;
proxy_read_timeout 90;
proxy_connect_timeout 90;
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 Proxy "";
}
Run Code Online (Sandbox Code Playgroud)
当谈到DjangoSTATIC_URL设置为 时os.path.join(BASE_DIR, "static/"),FORCE_SCRIPT_NAME没有设置,但是设置后,它根本不起作用。
有任何想法吗?
[更新]
经过几个小时的战斗,我放弃了。问题与 uwsgi 无法识别它在子路径中运行有关。以下是一些对于遇到类似问题的人可能有用的链接:
通过 nginx+uwsgi 在子路径中运行 django 应用程序
使用 Nginx 和 Gunicorn 为多个 Django 应用程序提供服务
我放弃了,只是为这个项目创建了单独的子域。
将此代码添加到您的 nginx 配置中:
location /static/ {
alias /path/static/;
}
Run Code Online (Sandbox Code Playgroud)
您应该定义静态文件的位置,以便读取它。
| 归档时间: |
|
| 查看次数: |
2102 次 |
| 最近记录: |