Django在uWSGI上运行,NGiNX-INI方法不起作用

Django在uWSGI上运行,NGiNX-INI方法不起作用,django,nginx,uwsgi,Django,Nginx,Uwsgi,我正在从apache和mod_wsgi迁移到nginx和uwsgi。我正在运行Python 3.3和Django 1.7。我在虚拟环境中通过apt-get和uwsgi通过pip安装了nginx 当我使用此命令时,我已经设置了Django项目并开始工作(位于localhost:8000-请参阅下面的nginx配置): uwsgi--master--processs 4--socket:8001--wsgi文件wsgi.py 但是,当我在INI文件中放入相同的配置时,它不起作用,我得到了一个错误的网

我正在从
apache
mod_wsgi
迁移到
nginx
uwsgi
。我正在运行Python 3.3和Django 1.7。我在虚拟环境中通过
apt-get
uwsgi
通过
pip
安装了
nginx

当我使用此命令时,我已经设置了Django项目并开始工作(位于
localhost:8000
-请参阅下面的
nginx
配置):

uwsgi--master--processs 4--socket:8001--wsgi文件wsgi.py

但是,当我在INI文件中放入相同的配置时,它不起作用,我得到了一个错误的网关502:

502 Bad Gateway
nginx/1.1.19
以下是
uwsgi
配置:

[uwsgi]
base = /path/to/project
wsgi-file = %(base)/proj/wsgi.py
logto = %(base)/proj/logs/uwsgi.log

chdir = %(base)
module = rebo.wsgi.local:application
home = /path/to/virtenvs/proj
master = true
processes = 4
socket = %(base)/proj/proj.sock
# I have tried ``socket = 8001`` as well
chmod-socket = 664
vacuum = true
upstream proj {
    server unix:///path/to/project/proj/proj.sock;
    # I have tried ``server 127.0.0.1:8001;`` as well
}

server {
    listen 8000;
    server_name 127.0.0.1;
    root /path/to/project;
    access_log /var/www/proj/access.log;
    error_log /var/www/proj/error.log;

    location /static/ {
        alias /path/to/project/proj/static/;
        expires 30d;
    }

    location /media/ {
        alias /path/to/project/proj/media/;
        expires 30d;
    }

    location / {
        include uwsgi_params;
        uwsgi_pass proj;
    }
}
# WRONG!!!
socket = 8001 
以及要启动的命令:

uwsgi--ini/path/to/uwsgi.ini

当我检查日志时,一切似乎都井然有序(注意
-这些是路径,输出没有显示错误):


我从各种来源收集了这篇文章,它似乎有正确的成分,但经过多次尝试和错误后,它仍然不起作用。

我不确定我读的是哪篇文档导致我走上了这条错误的道路,但我只使用了INI套接字配置的编号:

[uwsgi]
base = /path/to/project
wsgi-file = %(base)/proj/wsgi.py
logto = %(base)/proj/logs/uwsgi.log

chdir = %(base)
module = rebo.wsgi.local:application
home = /path/to/virtenvs/proj
master = true
processes = 4
socket = %(base)/proj/proj.sock
# I have tried ``socket = 8001`` as well
chmod-socket = 664
vacuum = true
upstream proj {
    server unix:///path/to/project/proj/proj.sock;
    # I have tried ``server 127.0.0.1:8001;`` as well
}

server {
    listen 8000;
    server_name 127.0.0.1;
    root /path/to/project;
    access_log /var/www/proj/access.log;
    error_log /var/www/proj/error.log;

    location /static/ {
        alias /path/to/project/proj/static/;
        expires 30d;
    }

    location /media/ {
        alias /path/to/project/proj/media/;
        expires 30d;
    }

    location / {
        include uwsgi_params;
        uwsgi_pass proj;
    }
}
# WRONG!!!
socket = 8001 
应该是,就像手动命令行方法一样:

# CORRECT
socket = :8001
或者像大多数文档描述的那样:

# ALSO CORRECT, and probably better
socket = 127.0.0.1:8001
我想这是一次我可能确实有了正确的配置,但在匆忙中,我改变了它与其他变量(一个故障排除没有否),并随身携带,错误


感谢您的反馈和评论。希望这至少能帮助另外一个人;-)

看看这个:
module=rebo.wsgi.local
应该是
module=rebo.wsgi:application
?这个模块实际上住在
rebo.wsgi.local
所以你说它应该是
rebo.wsgi.local:application
?哪个模块?是的,
:应用程序必须在那里我很抱歉。。。我应该提到的,但我很早就试过了。我试过几件事,但并没有全部列出。这没用。