python - django-gunicorn-nginx : 502 bad gateway

标签 python django nginx gunicorn

我正在尝试将我的 Web 应用程序发送到服务器,这是我第一次配置服务器。我正在按照本教程 http://ijcdigital.com/blog/django-gunicorn-and-nginx-setup/ 使用 django-gunicorn-nginx 设置首先一切都很完美,我得到了 django 欢迎页面。然后我在 django 项目中加载了应用程序并设置了静态根,现在我得到了 502 bad gateway 您可以在 http://qlimp.com 中查看

gunicorn 和 supervisor 设置之前的所有内容都与该教程中所示的相同。但是我修改了一些nginx conf。在这里:

upstream app_server_djangoapp {
    server localhost:8001 fail_timeout=0;
}

server {
    listen 80;
    server_name qlimp.com;

    access_log  /var/log/nginx/guni-access.log;
    error_log  /var/log/nginx/guni-error.log info;

    keepalive_timeout 5;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        if (!-f $request_filename) {
            proxy_pass http://app_server_djangoapp;
            break;
        }
    }
    location /files/ {
        autoindex on;
        root /home/nirmal/qlimp/qlimp/files/;
    }
}

这是我的媒体网址:

MEDIA_URL = '/files/'

Files 是我拥有所有静态文件的文件夹。如何让我的项目在服务器上运行?谁能指导我?

更新

错误日志 https://gist.github.com/2768425

谢谢!

最佳答案

首先。不要在 nginx conf 中使用 if。这不好。真的,真的很可怕。请改用以下内容:

location / {
    try_files $uri @proxy;
}

location @proxy {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://app_server_djangoapp;
}

参见:http://wiki.nginx.org/IfIsEvilhttp://wiki.nginx.org/Pitfalls

现在,就调试而言。你的 gunicorn worker 正在启动,因为有一些 fatal error 。尝试关闭 gunicorn。如果您使用的是主管:

sudo supervisorctl stop [gunicorn process name]

然后,从您的项目根目录运行:

python manage.py run_gunicorn -c path/to/gunicorn.conf

注意任何启动错误,或者如果它确实启动了,请在浏览器中测试您的网站。如果您仍然没有获得任何有意义的信息,请尝试运行标准运行服务器

python manage.py runserver

再次注意任何错误,如果加载正常,请在浏览器中测试您的网站。我建议像在开发中一样在 localhost:8000 上进行测试。其中之一应该可以为您提供有用的东西。

更新

您遇到的错误是无法连接到“ind=127.0.0.1”。然后,查看您正在运行的命令 gunicorn_django -bind=127.0.0.1:8001,很容易看出问题所在。您可以使用 -b--bind 指定要绑定(bind)的 IP 和端口。由于您只使用了一个 -,它将 IP 解释为 ind=127.0.0.1,这显然是不正确的。您需要使用:

gunicorn_django --bind=127.0.0.1:8001

或者

gunicorn_django -b 127.0.0.1:8001

关于python - django-gunicorn-nginx : 502 bad gateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10700638/

相关文章:

python - 来自 SciKit-Learn 的 LabelEncoder 的 TypeError

php - 使用了无效的操作数类型 : array_uintersect expects array(s)

node.js - React 路由器、nginx、 Node 、静态文件

python - Django rest framework 允许 lookup_field 有多个选项

python - 为什么Python会修改跳出循环的列表?

python - 每个域/url "SSLError certificate verify failed"

python - django 和 uwsgi 上的语言环境 UnicodeEncodeError

python - 正则表达式 URL 帮助 : Word or Phrase

django - 如何在 Django 中翻译表单?

json - Openresty自定义json访问日志