Nginx uswgi django子路径没有uwsgi_modifier1 30;

时间:2016-07-28 10:02:20

标签: django nginx uwsgi

我要部署在子路径下运行的django应用程序。

这是我的uswgi.ini文件:

[uwsgi]
socket = :3031
http= :9000
chdir = .
wsgi-file = docker.wsgi
processes = 4
threads = 2
stats = :9191
enable-threads = true

这是我的nginx conf文件

server {
    location /my/subpath {
        include uwsgi_params;
        uwsgi_pass django:3031;
    }
}

现在使用此配置django无法匹配网址,因为它希望在/而不是/my/subpath接受请求

如果我修改nginx conf:

server {
    location /my/subpath {
        include uwsgi_params;
        uwsgi_pass django:3031;
        uwsgi_param SCRIPT_NAME /my/subpath;
        uwsgi_modifier1 30;
    }
}

它有效,但

  

注意:古老的uWSGI版本用于支持所谓的   “uwsgi_modifier1 30”方法。不要做。这是一个非常丑陋的黑客   (source

我无法理解如何配置nginx以使其正常工作。

从uwsgi的文档中可以使用mount点,但即便如此,我也无法弄清楚如何更改uwsgi.ini文件以使其正常工作。

老实说,我想只修复nginx文件而不是uwsgi.ini。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,但是我通过将以下行添加到uswgi.ini文件中来解决了该问题:

mount = /api=<project_name>.wsgi:application
manage-script-name = true