Django app在nginx+uwsgi上配置子路径时有错误的url

2024-04-26 21:41:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试配置nginx和uwsgi在/blog子路径上为django(确切地说是wagtail)应用程序提供服务。这个问题的大多数答案(如this one)建议使用:

location /blog {
    include uwsgi_params;
    uwsgi_pass unix:/run/uwsgi/application.sock;
    uwsgi_param SCRIPT_NAME /blog;
    uwsgi_modifier1 30;
}

不幸的是,这对我不起作用。访问/blog会复制子路径并重定向到/blog/blog/。Wagtail随后显示其404页,因为/blog/blog/不存在。我不确定是nginx还是django问题。在


Tags: django答案路径应用程序includenginxlocationblog
1条回答
网友
1楼 · 发布于 2024-04-26 21:41:12

我也遇到过类似的问题,下面是我解决它的方法。可与Wagtail 1.13+uwsgi+nginx/1.10.3(Ubuntu)配合使用。在

在wagtail博客/设置中/基准.py

ROOT_URL = '/blog'
USE_X_FORWARDED_HOST  = True
FORCE_SCRIPT_NAME     = ROOT_URL
BASE_PATH             = ROOT_URL

APP_SUB_URL = ROOT_URL
if len(APP_SUB_URL):
    FORCE_SCRIPT_NAME = APP_SUB_URL

STATIC_URL = APP_SUB_URL + "/static/"
MEDIA_URL = APP_SUB_URL + "/media/"
ADMIN_MEDIA_PREFIX = APP_SUB_URL + "/static/admin/"
LOGIN_URL = APP_SUB_URL + "/login/"

在nginx博客.conf文件:

^{pr2}$

此外,您可以让nginx处理静态文件以获得更好的性能:

location /blog/static/ {
    access_log off;
    expires 3600;
    alias /path/to/wagtail/app/blog/static/;
}

location /blog/media/ {
    access_log off;
    expires 864000;
    alias /path/to/wagtail/app/media/;
}

我还必须将符号链接添加到/path/to/wagtail/app/blog/static/

cd /path/to/wagtail/app/blog/static/
ln -s ../../../venv/lib/python3.5/site-packages/wagtail/wagtailadmin/static/wagtailadmin/
ln -s ../../../venv/lib/python3.5/site-packages/wagtail/wagtaildocs/static/wagtaildocs/
ln -s ../../../venv/lib/python3.5/site-packages/wagtail/wagtailembeds/static/wagtailembeds/
ln -s ../../../venv/lib/python3.5/site-packages/wagtail/wagtailimages/static/wagtailimages/
ln -s ../../../venv/lib/python3.5/site-packages/wagtail/wagtailsnippets/static/wagtailsnippets/

相关问题 更多 >