Nginx:具有项目根目录的多个 Django 项目?
通常我用的是切诺基。由于最新 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
nginx 不会自动将 SCRIPT_NAME 设置为 Cherokee。
强制它
您可以使用uwsgi_param SCRIPT_NAME /project1;
然后你需要重写 PATH_INFO,uWSGI 可以自动为你设置
uwsgi_modifier1 30
如此完整的 nginx 配置:
另一种方法是在 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:
Another approach would be doing the whole job in uWSGI passing --manage-script-name as option and leaving the nginx config untouched.