(13: odmowa zgody) podczas łączenia się z upstream: [nginx]

Pracuję nad konfiguracją projektu django za pomocą nginx i gunicorn. Podczas gdy uzyskuję dostęp do mojego portu gunicorn mysite.wsgi:application --bind=127.0.0.1:8001 w nginx server dostaję następujący błąd w moim pliku dziennika błędów.

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"

Mój nginx.conf Plik

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

Na stronie html dostaję 502 Bad Gateway.

Jaki błąd popełniam?

Author: jfunez, 2014-05-30

6 answers

Miałem podobny problem z Fedorą 20, Nginx, Node.js i Ghost (blog) do pracy. Okazało się, że mój problem był spowodowany SELinux .

To powinno rozwiązać problem:

setsebool -P httpd_can_network_connect 1

Szczegóły

Sprawdziłem czy nie ma błędów w logach SELinux:

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

I okazało się, że uruchomienie następujących poleceń naprawiło mój wydanie:

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

Bibliografia:

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

 403
Author: joebarbere,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-07 04:19:13

Też napotkałem ten problem. Innym rozwiązaniem jest przełączenie wartości boolean SELinux dla połączenia sieciowego httpd na on (Nginx używa etykiety httpd).

setsebool httpd_can_network_connect on

Aby zmienić persist Użyj flagi-P.

setsebool httpd_can_network_connect on -P

Możesz zobaczyć listę wszystkich dostępnych booleanów SELinux dla httpd przy użyciu

getsebool -a | grep httpd
 145
Author: Sid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-14 10:18:00

Rozwiązałem swój problem, uruchamiając mój nginx jako mojego obecnego użytkownika, który jest mulagala. domyślnie użytkownik jako nginx w moim pliku nginx.conf.Możemy znaleźć tę linię na górze pliku nginx.conf.

user nginx;

Zmień tę nazwę na obecną, działającą nazwę Użytkownika, jak

user  mulagala;
 11
Author: Mulagala,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-04 10:52:32

Miał podobny problem na Centos 7. Kiedy próbowałem zastosować roztwór przepisany przez Sorina, zacząłem poruszać się w cyklach. Najpierw miałem pozwolenie {write} odrzucone. Potem, gdy rozwiązałem, że miałem pozwolenie { connectto } odrzucone. Następnie z powrotem do uprawnienia {write } odrzucone.

Po odpowiedzi @Sid powyżej sprawdzania FLAG za pomocą getsebool -a | grep httpd i przełączania ich okazało się, że oprócz wyłączonego httpd_can_network_connect. http_anon_write był również wyłączony, co skutkowało odmową uprawnień write and permission denied {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

Uzyskane za pomocą sudo cat / var / log / audit / audit.log / grep nginx / grep denied jak wyjaśniono powyżej.

Więc rozwiązałem je po kolei, zmieniając flagi po kolei.
setsebool httpd_can_network_connect on -P

Następnie Uruchamianie poleceń podanych przez @sorin i @Joseph powyżej

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

Zasadniczo możesz sprawdzić uprawnienia ustawione na setsebool i skorelować je z błędem uzyskanym z audytu grepp 'ING'.log nginx, denied

 9
Author: unlockme,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-04 07:45:22

Też napotkałem ten problem. Używam Nginx z HHVM, poniżej rozwiązano mój problem:

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

sudo restorecon -R -v /etc/nginx/fastcgi_temp
 1
Author: sule,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-15 08:45:03
sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx

sudo semodule -i mynginx.pp
 -2
Author: TitaniuM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-06 20:20:56