繁体   English   中英

django + gunicorn + nginx配置上的坏网关

[英]bad gateway on django+gunicorn+nginx configuration

当我尝试访问我的网站时,我只看到502错误。 这是我的nginx配置:

upstream pzw_server {
#   server unix:/home/pzw/pzw/run/gunicorn.sock fail_timeout=0;
    server 127.0.0.1:8000 fail_timeout=0;
}

server {
    listen 80;
    server_name my_server_ip_addr;

    client_max_body_size 4G;

    access_log /home/pzw/pzw/log/nginx-access.log;
    error_log /home/pzw/pzw/log/nginx-error.log;

    location /static/ {
        alias /home/pzw/pzw/static/;
    }

    location /media/ {
            alias /home/pzw/pzw/media/;
    }

    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://my_server_ip_addr;
    }
}

我正在使用的Gunicorn启动脚本:

#!/bin/bash

NAME='app_name'
DJANGODIR=/home/pzw/pzw
SOCKFILE=/home/pzw/pzw/run/gunicorn.sock
USER=pzw
GROUP=pzw
NUM_WORKERS=3
DJANGO_SETTINGS_MODULE=app_name.settings
VIRTENVDIR=/home/pzw/.virtualenvs/pzw


echo "STARTING $NAME"

cd $DJANGODIR
source "${VIRTENVDIR}/bin/activate"
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH

RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR

exec "${VIRTENVDIR}/bin/gunicorn_django" \
    --name $NAME \
    --workers $NUM_WORKERS \
    --user=$USER --group=$GROUP \
    --debug \
    --log-level debug #\
#   --bind=unix:$SOCKFILE

Nginx记录以下错误:

2013/08/03 23:26:04 [error] 8582#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: my_ip, server: my_server_ip, request: "GET / HTTP/1.1", upstream: "http://my_server_ip:80/", host: "my_server_ip"

当我尝试使用lynx在我的服务器上连接到127.0.0.1:8000时,一切似乎都没问题。 最初我尝试使用unix socket,但由于它不起作用(相同的错误),我切换到TCP。 Gunicorn没有记录与nginx的连接。

nginx服务器配置中的proxy_pass指令应该反映您配置的上游服务器。

proxy_pass http://pzw_server;

http://wiki.nginx.org/HttpUpstreamModule

xaxes,

每当您将TEMPLATE_DEBUG设置为False时,您还需要设置ALLOWED_HOSTS,以便Django知道要处理请求的主机/域。 显然,当ALLOWED_HOSTS只是空列表时,localhost隐式工作。

我希望这有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM