(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?
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
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
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;
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
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
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
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