[django] (13: Berechtigung verweigert) beim Verbinden mit dem Upstream:



Answers

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

setsebool httpd_can_network_connect on

Um die Änderung dauerhaft zu machen, verwenden Sie die Markierung -P.

setsebool httpd_can_network_connect on -P

Sie können eine Liste aller verfügbaren SELinux Booleans für httpd mit sehen

getsebool -a | grep httpd
Question

Ich arbeite mit der Konfiguration von Django-Projekt mit Nginx und Gunicorn. Während ich auf meinen Port gunicorn mysite.wsgi:application --bind=127.0.0.1:8001 in Nginx-Server gunicorn mysite.wsgi:application --bind=127.0.0.1:8001 ich den folgenden Fehler in meiner Fehlerprotokolldatei.

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"

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

In der HTML-Seite bekomme ich 502 Bad Gateway .

Welchen Fehler mache ich?




sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx

sudo semodule -i mynginx.pp



Hatte ein ähnliches Problem auf Centos 7. Als ich versuchte, die von Sorin vorgeschriebene Lösung anzuwenden, bewegte ich mich in Zyklen. Zuerst hatte ich eine Erlaubnis verweigert. Dann, als ich das gelöst habe, hatte ich eine Erlaubnis {connectto} verweigert. Dann wieder zurück zur Erlaubnis {write} verweigert.

Folgen Sie @Sid antworten Sie oben auf das Überprüfen der Flags mit getsebool -a | grep httpd getsebool -a | grep httpd und schalten Sie sie habe ich festgestellt, dass zusätzlich zu dem httpd_can_network_connect ausgeschaltet ist. http_anon_write war ebenfalls deaktiviert, was dazu führte, dass die Berechtigung verweigert wurde und die Berechtigung verweigert wurde {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

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

Also löste ich sie nacheinander und schaltete die Flaggen nacheinander um.

setsebool httpd_can_network_connect on -P

Dann führen Sie die oben mit @sorin und @Joseph angegebenen Befehle aus

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

Im Grunde können Sie die Berechtigungen überprüfen, die auf setsebool gesetzt sind, und diese mit dem Fehler korrelieren, der von grepp'ing 'audit.log nginx, denied verweigert wurde






Links