当我尝试访问我的网站时,我只看到502错误。 这是我的nginxconfiguration:
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没有logging与nginx的连接。
您的nginx服务器配置中的proxy_pass
指令应反映您配置的上游服务器。
proxy_pass http://pzw_server;
xaxes,
每当将TEMPLATE_DEBUG设置为False时,您还需要设置ALLOWED_HOSTS,以便Django知道要处理请求的主机/域。 显然,当ALLOWED_HOSTS只是空列表时,localhost隐式地工作。
我希望这有帮助!