mauvaise passerelle sur django + gunicorn + configuration nginx

lorsque j’essaie d’accéder à mon site, je ne vois que l’erreur 502. Voici ma configuration 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; } } 

Script de démarrage Gunicorn que j’utilise:

 #!/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 journaux d’erreur suivante:

 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" 

Lorsque j’essaie de me connecter à 127.0.0.1:8000 sur mon serveur avec lynx, tout semble aller bien. Au début, j’ai essayé d’utiliser un socket unix, mais comme cela ne fonctionnait pas (même erreur), je suis passé à TCP. Gunicorn ne consigne rien sur la connexion avec nginx.

La directive proxy_pass de votre configuration de serveur nginx doit refléter le serveur en amont que vous avez configuré.

 proxy_pass http://pzw_server; 

http://wiki.nginx.org/HttpUpstreamModule

les xaxes,

Chaque fois que vous définissez votre TEMPLATE_DEBUG sur False, vous devez également définir ALLOWED_HOSTS afin que Django sache à quels hôtes / domaines traiter les demandes. Apparemment, le localhost fonctionne implicitement lorsque ALLOWED_HOSTS est juste la liste vide.

J’espère que ça aide!