Je travaille à la configuration du projet Django avec nginx et gunicorn. Pendant que j'accède à mon port gunicorn mysite.wsgi:application --bind=127.0.0.1:8001
sur le serveur nginx, l'erreur suivante apparaît dans mon fichier journal des erreurs.
2014/05/30 11:59:42 [crit] 4075#0: *6 connect() to 127.0.0.1:8001 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8001/", Host: "localhost:8080"
Mon fichier nginx.conf
server {
listen 8080;
server_name localhost;
access_log /var/log/nginx/example.log;
error_log /var/log/nginx/example.error.log;
location / {
proxy_pass http://127.0.0.1:8001;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_Host;
}
}
Dans la page html, je reçois 502 Bad Gateway
.
Quelle erreur est-ce que je fais?
J'ai eu un problème similaire à faire fonctionner Fedora 20, Nginx, Node.js et Ghost (blog). Il se trouve que mon problème était dû à SELinux .
Cela devrait résoudre le problème:
setsebool -P httpd_can_network_connect 1
J'ai vérifié les erreurs dans les journaux SELinux:
Sudo cat /var/log/audit/audit.log | grep nginx | grep denied
Et constaté que l'exécution des commandes suivantes corrigeait mon problème:
Sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
Sudo semodule -i mynginx.pp
Références:
http://blog.frag-gustav.de/2013/07/21/nginx-selinux-me-mad/
https://wiki.gentoo.org/wiki/SELinux/Tutorials/Where_to_find_SELinux_permission_denial_details
http://wiki.gentoo.org/wiki/SELinux/Tutorials/Managing_network_port_labels
J'ai rencontré ce problème aussi. Une autre solution consiste à basculer la valeur booléenne SELinux pour la connexion réseau httpd à on
(Nginx utilise l'étiquette httpd).
setsebool httpd_can_network_connect on
Pour que le changement persiste, utilisez l'indicateur -P.
setsebool httpd_can_network_connect on -P
Vous pouvez voir une liste de tous les booléens SELinux disponibles pour httpd en utilisant
getsebool -a | grep httpd
Avait un problème similaire sur Centos 7. Lorsque j'ai essayé d'appliquer la solution prescrite par Sorin, j'ai commencé à bouger par cycles. J'ai d'abord eu une permission {écriture} refusée. Puis, quand j'ai résolu le problème, j'ai refusé une permission {connectto}. Puis de nouveau à permission {écriture} refusée.
Après @Sid, répondez ci-dessus en vérifiant les indicateurs à l'aide de getsebool -a | grep httpd
et en les basculant, ce qui s'ajoute à la désactivation de httpd_can_network_connect. http_anon_write était également désactivé, ce qui a entraîné une autorisation d’écriture refusée et une autorisation refusée {connectto}
type=AVC msg=audit(1501830505.174:799183): avc:
denied { write } for pid=12144 comm="nginx" name="myroject.sock"
dev="dm-2" ino=134718735 scontext=system_u:system_r:httpd_t:s0
tcontext=system_u:object_r:default_t:s0 tclass=sock_file
Obtenu avec Sudo cat /var/log/audit/audit.log | grep nginx | grep a nié comme expliqué ci-dessus.
Je les ai donc résolus un à la fois, en basculant les drapeaux un à un.
setsebool httpd_can_network_connect on -P
Puis en exécutant les commandes spécifiées par @sorin et @Joseph ci-dessus
Sudo cat /var/log/audit/audit.log | grep nginx | grep denied |
audit2allow -M mynginx
Sudo semodule -i mynginx.pp
Fondamentalement, vous pouvez vérifier les autorisations définies sur setsebool et les corréler avec l'erreur obtenue de grepp'ing 'audit.log nginx, refusée.
J'ai résolu mon problème en exécutant mon nginx en tant qu'utilisateur actif qui est mulagala
. Par défaut, l'utilisateur en tant que nginx
dans mon fichier nginx.conf
.Nous pouvons trouver cette ligne en haut de le fichier nginx.conf
.
user nginx;
changez ceci en votre nom d'utilisateur de travail actuel comme
user mulagala;
si l'erreur "502 passerelle incorrecte" jette sur l'URL de l'API centos pour le transfert du proxy de la passerelle API sur nginx, exécutez la commande suivante pour résoudre le problème
Sudo setsebool -P httpd_can_network_connect 1
J'ai rencontré ce problème aussi. J'utilise Nginx avec HHVM, la solution ci-dessous a résolu mon problème:
Sudo semanage fcontext -a -t httpd_sys_rw_content_t "/etc/nginx/fastcgi_temp(/.*)?"
Sudo restorecon -R -v /etc/nginx/fastcgi_temp
13 autorisations refusées lors de la connexion à upstreamnginx sur le serveur centos -
setsebool -P httpd_can_network_connect 1
Merci, les gars :) maintenant je peux utiliser le proxy Nginx pour mon URL Kibana
commande vraiment utile :) setsebool -P httpd_can_network_connect 1
/etc/nginx/nginx.conf
Sudo chown -R nginx:nginx /var/lib/nginx
Maintenant, vois la magie.