it-swarm.com.de

(13: Erlaubnis verweigert) beim Verbinden mit dem Upstream: [nginx]

Ich arbeite mit der Konfiguration von Django Projekt mit Nginx und Gunicorn. Während ich auf meinen Port zugreife gunicorn mysite.wsgi:application --bind=127.0.0.1:8001 Auf einem Nginx-Server wird der folgende Fehler in der Fehlerprotokolldatei angezeigt.

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"

Mein nginx.conf Datei

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;
    }
}

Auf der HTML-Seite bekomme ich 502 Bad Gateway.

Welchen Fehler mache ich?

237
Mulagala

Ich hatte ein ähnliches Problem damit, Fedora 20, Nginx, Node.js und Ghost (Blog) zum Laufen zu bringen. Es stellte sich heraus, dass mein Problem an SELinux lag.

Dies sollte das Problem lösen:

setsebool -P httpd_can_network_connect 1

Einzelheiten

Ich habe in den SELinux-Protokollen nach Fehlern gesucht:

Sudo cat /var/log/audit/audit.log | grep nginx | grep denied

Und festgestellt, dass das Ausführen der folgenden Befehle mein Problem behoben:

Sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
Sudo semodule -i mynginx.pp

Verweise:

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

http://www.linuxproblems.org/wiki/Selinux

550
joebarbere

Ich bin auch auf dieses Problem gestoßen. Eine andere Lösung besteht darin, den SELinux-Booleschen Wert für httpd network connect auf on umzuschalten (Nginx verwendet das httpd-Label).

setsebool httpd_can_network_connect on

Um die Änderung beizubehalten, verwenden Sie das Flag -P.

setsebool httpd_can_network_connect on -P

Sie können eine Liste aller verfügbaren SELinux-Booleschen Werte für httpd anzeigen, die verwendet werden

getsebool -a | grep httpd
167
Sid

Auf Centos 7 hatte ich ein ähnliches Problem. Als ich versuchte, die von Sorin vorgeschriebene Lösung anzuwenden, begann ich, mich in Zyklen zu bewegen. Zuerst hatte ich eine Erlaubnis verweigert. Als ich dann herausfand, dass mir eine Erlaubnis verweigert wurde. Dann zurück zur Erlaubnis verweigert.

Nach der @Sid-Antwort oben zum Überprüfen der Flags mit getsebool -a | grep httpd und umschalten Ich fand, dass zusätzlich zu der httpd_can_network_connect ausgeschaltet ist. http_anon_write war ebenfalls deaktiviert, was dazu führte, dass die Erlaubnis zum Schreiben verweigert und die Erlaubnis zum Verbinden verweigert wurde.

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

Erhalten mit Sudo cat /var/log/audit/audit.log | grep nginx | grep bestritt wie oben erklärt.

Also löste ich sie nacheinander und wechselte die Flaggen nacheinander.

setsebool httpd_can_network_connect on -P

Führen Sie dann die von @sorin und @Joseph oben angegebenen Befehle aus

Sudo cat /var/log/audit/audit.log | grep nginx | grep denied | 
audit2allow -M mynginx
Sudo semodule -i mynginx.pp

Grundsätzlich können Sie die für setsebool festgelegten Berechtigungen überprüfen und diese mit dem Fehler korrelieren, der von grepp'ing 'audit.log nginx, denied, erhalten wurde

13
unlockme

Ich habe mein Problem gelöst, indem ich mein Nginx als meinen aktuellen Arbeitsbenutzer ausgeführt habe, der mulagala ist. Standardmäßig ist der Benutzer nginx in meinem nginx.conf file.We finden diese Zeile am oberen Rand des nginx.conf Datei.

user nginx;

ändern Sie dies auf Ihren aktuellen Benutzernamen wie

user  mulagala;
10
Mulagala

wenn der Fehler "502 Bad Gateway" auf der centos-API-URL für die API-Gateway-Proxy-Weitergabe von nginx auftritt, führen Sie den folgenden Befehl aus, um das Problem zu beheben

Sudo setsebool -P httpd_can_network_connect 1
1
Ezhil Arasan

Ich bin auch auf dieses Problem gestoßen. Ich verwende Nginx mit HHVM. Die folgende Lösung hat mein Problem behoben:

Sudo semanage fcontext -a -t httpd_sys_rw_content_t "/etc/nginx/fastcgi_temp(/.*)?"

Sudo restorecon -R -v /etc/nginx/fastcgi_temp
1
sule

13-erlaubnis-verweigert-beim-verbinden-mit-upstreamnginx auf centos server -

setsebool -P httpd_can_network_connect 1

0
kumar

Danke, Leute :) Jetzt kann ich den Nginx-Proxy für meine Kibana-URL verwenden

wirklich nützlicher Befehl :) setsebool -P httpd_can_network_connect 1

0
Abhishek Jalan
  1. Überprüfen Sie den Benutzer in /etc/nginx/nginx.conf
  2. Eigentümer in Benutzer ändern.
Sudo chown -R nginx:nginx /var/lib/nginx

Jetzt sieh die Magie.

0