web-dev-qa-db-fra.com

Nginx et uWSGI: connexion refusée et erreur de passerelle incorrecte 502

Essayer de configurer Nginx et uWSGI sur Ubuntu 13.10.

Lorsque j'essaie d'accéder au site Web, tout ce que je reçois est "502 Bad Gateway".

A exécuté apt-get install nginx uwsgi uwsgi-plugin-python3 pour installer nginx/uwsgi.

/etc/nginx/sites-enabled/webpage.com:

server {
        listen          80;
        server_name     webpage.com;
        access_log /var/log/nginx/webpage.com_access.log;
        error_log /var/log/nginx/webpage.com_error.log;


        location / {
            uwsgi_pass      /var/run/webpage.com.uwsgi.socket;
            include         uwsgi_params;
            uwsgi_param     Host $Host;
            uwsgi_param     X-Real-IP $remote_addr;
            uwsgi_param     UWSGI_SCHEME $scheme;
            uwsgi_param     SERVER_SOFTWARE nginx/$nginx_version;     
        }
}

/etc/uwsgi/apps-enabled/webpage.com

[uwsgi]
vhost = true
plugin = python3
socket = /tmp/webpage.com.sock
master = true
enable-threads = true
processes = 2
home = /var/www/webpage.com/env
wsgi-file = /var/www/webpage.com/env/hello.py
virtualenv = /var/www/webpage.com/env
chdir = /var/www/webpage.com/env
touch-reload = /var/www/webpage.com/reload

/var/log/nginx/webpage.com_error.log

2014/01/17 16:28:58 [error] 25073#0: *13 connect() to unix:///var/run/webpage.com.uwsgi.socket failed (111: Connection refused) while connecting to upstream, client: 83.109.132.224, server: webpage.com, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:///var/run/webpage.com.uwsgi.socket:", Host: "webpage.com"

hello.py est juste une application simple bonjour monde.

Cela fait plusieurs heures que je lutte avec ça ... Maintenant, j'ai besoin d'aide :) 

9
user1608728

En regardant les fichiers de configuration postés ici, vous faites référence au socket dans nginx comme suit:

uwsgi_pass      /var/run/webpage.com.uwsgi.socket;

et en uwsgi comme

socket = /tmp/webpage.com.sock
7
Paolo Casciello

Je réalise que cela n’a rien à voir avec le problème du PO, mais comme c’est le message le plus touché par ce message d’erreur de Google, je voudrais indiquer ce qui a réglé le problème pour moi.

Je suivais un tutoriel qui recommandait de placer uwsgi_pass 127.0.0.1:9090; dans la configuration nginx pour un script Python qui avait été configuré dans la configuration uwsgi avec http-socket = :9090. le journal des erreurs /var/log/nginx/error.log montrait le problème: 2015/08/13 02:16:04 [error] 12566#12566: *2 upstream prematurely closed connection while reading response header from upstream, client: ::1, server: ~^(www\.)?(.+)$, request: "GET /hello/ HTTP/1.1", upstream: "uwsgi://127.0.0.1:9090", Host: "kybyz", le navigateur me renvoyait l’erreur 502 Bad Gateway.

il y avait deux façons (au moins) de le réparer. la première consistait à changer http-socket dans la configuration uwsgi en socket (comme il s'est avéré, le tutorial recommandé; je ne l'avais tout simplement pas lu assez attentivement). cependant, cela ne me permettrait plus de tester le script directement en pointant mon navigateur sur http://127.0.0.1:9090/, car le script parlait maintenant du protocole uwsgi au lieu de http. J'ai donc reconverti en http-socket et changé, dans la configuration nginx, la ligne uwsgi_pass en proxy_pass http://127.0.0.1:9090;.

1
jcomeau_ictx

Cela ne répond pas à la question initiale de l'OP, mais j'avais la même erreur dans nginx, connect() to unix:///tmp/uwsgi_dev.sock failed (13: Permission denied) while connecting to upstream, et j'ai pu résoudre le problème en redémarrant complètement le processus uwsgi. C'est un serveur de production, donc j’étais hésitant à faire un redémarrage forcé, mais le simple rechargement du processus uwsgi n’a pas suffi. J'espère que ça aide quelqu'un. 

1
jstaab

En règle générale, il s’agit d’un problème d’autorisation de fichier, c’est-à-dire que le fichier de socket uwsgi n’est pas lisible par le processus nginx. Vérifiez l'autorisation du fichier de socket, son dossier parent et son dossier grand-parent, etc. Vous pouvez le faire avec une seule commande (supposons que votre processus nginx soit exécuté par l'utilisateur nginx):

su nginx -c "[[ -r sockfile ]] && echo ok"
0
Cyker

Pour mon application Python Django sur AWS, elle est simplement surchargée. 

Tout d'abord, j'ai ajouté plus de serveurs et j'ai constaté que les instances C (calcul) étaient meilleures que les instances d'usage général (M), car la charge du processeur était de 66% (utilisée par d'autres clients) après avoir épuisé le processeur. crédits. 

Mais après avoir exécuté l'application pendant un certain temps (et après avoir multiplié par 5 le nombre de demandes entrantes au cours d'une courte période), j'ai également vérifié les performances de la base de données (RDS), qui fonctionnait à 100%. J'ai également augmenté la taille de l'instance de base de données de 4 à 8 UC et maintenant, cela fonctionne à nouveau sans erreur.

0
PHZ.fi-Pharazon