3

当我尝试访问我的网站时,我只看到 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 套接字,但由于它不起作用(同样的错误),我切换到 TCP。Gunicorn 没有记录与 nginx 的连接。

4

2 回答 2

5

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

proxy_pass http://pzw_server;

http://wiki.nginx.org/HttpUpstreamModule

于 2013-08-03T23:36:04.597 回答
2

轴,

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

我希望这有帮助!

于 2013-12-10T01:39:25.577 回答