Nginx:具有项目根目录的多个 Django 项目?

发布于 2024-12-22 18:45:08 字数 571 浏览 2 评论 0原文

通常我用的是切诺基。由于最新 chrome 版本的一些关键问题,我不得不暂时将我的生产服务器更改为 nginx。

目前正在尝试让我的配置像在切诺基中一样工作。 我正在使用一个非常简单的 uwsgi 处理程序:

    location /project1 {
            include uwsgi_params;
            uwsgi_pass localhost:3032;
    }

工作正常,该项目可在 myurl.com/project1 上找到。 但 django 将 myurl.com 作为项目根目录。

示例我希望它如何工作: 一个子域上有多个项目:project1 位于 /project1 上,project2 位于 /project2 上,等等。

Django 正则表达式规则“^$”应该适用于每个项目,例如:

In Project1: ^$ -> /project1

在 Project2 中:^$ -> /project2 等。

有没有办法让它在 nginx 中工作?

干杯,

Usually i'm using cherokee. Due to some critical issues with the latest chrome release i had to change my productive server to nginx for the time being.

Currently trying to get my configuration working as it did in cherokee.
I'm using a very simple uwsgi handler:

    location /project1 {
            include uwsgi_params;
            uwsgi_pass localhost:3032;
    }

Works fine, the project is available on myurl.com/project1.
But django takes myurl.com as project root.

Example how i want it to work:
Multiple projects on one subdomain: project1 on /project1, project2 on /project2, etc.

The Django regex rule "^$" should work on every project like:

In Project1: ^$ -> /project1

In Project2: ^$ -> /project2 etc.

Is there a way to get this in nginx working?

Cheers,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

木有鱼丸 2024-12-29 18:45:08

nginx 不会自动将 SCRIPT_NAME 设置为 Cherokee。

强制它

您可以使用uwsgi_param SCRIPT_NAME /project1;

然后你需要重写 PATH_INFO,uWSGI 可以自动为你设置

uwsgi_modifier1 30

如此完整的 nginx 配置:

 location /project1 {

        include uwsgi_params;
        uwsgi_param SCRIPT_NAME /project1;
        uwsgi_modifier1 30;
        uwsgi_pass localhost:3032;
}

另一种方法是在 uWSGI 中完成整个工作,传递 --manage-script-name 作为选项,并保持 nginx 配置不变。

nginx does not set SCRIPT_NAME automatically as Cherokee.

You can force it with

uwsgi_param SCRIPT_NAME /project1;

you then need to rewrite the PATH_INFO, uWSGI can do this automatically for you setting

uwsgi_modifier1 30

So full nginx config:

 location /project1 {

        include uwsgi_params;
        uwsgi_param SCRIPT_NAME /project1;
        uwsgi_modifier1 30;
        uwsgi_pass localhost:3032;
}

Another approach would be doing the whole job in uWSGI passing --manage-script-name as option and leaving the nginx config untouched.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文