(13: отказано в разрешении) при подключении к upstream: [nginx]

Я работаю с настройкой проекта django с nginx и gunicorn. Пока я получаю доступ к своему порту gunicorn mysite.wsgi:application --bind=127.0.0.1:8001 в сервере nginx я получаю следующую ошибку в моем файле журнала ошибок.

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"

мой

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

на html-странице Я получаю 502 Bad Gateway.

какую ошибку я делаю?

6 ответов


у меня была аналогичная проблема с получением Fedora 20, Nginx, Node.js и Ghost (блог) для работы. Оказывается, моя проблема была связана с настройки SELinux.

Это должно решить проблему:

setsebool -P httpd_can_network_connect 1

подробности

Я проверил ошибки в журналах SELinux:

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

и обнаружил, что выполнение следующих команд исправило мой выпуск:

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

ссылки:

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


Я тоже столкнулся с такой проблемой. Другое решение-переключить логическое значение SELinux для подключения сети httpd к on (Nginx использует метку httpd).

setsebool httpd_can_network_connect on

для сохранения изменений используйте флаг-P.

setsebool httpd_can_network_connect on -P

вы можете увидеть список всех доступных логических значений SELinux для httpd с помощью

getsebool -a | grep httpd

я решил свою проблему, запустив мой nginx в качестве моего нынешнего рабочего пользователя, который mulagala.По умолчанию пользователь as nginx в своем .Мы можем найти эту строку в верхней части .

user nginx;

измените это на текущее рабочее имя пользователя, например

user  mulagala;

была аналогичная проблема на Centos 7. Когда я попытался применить раствор, предписанный Сорином, я начал двигаться циклически. Сначала у меня было разрешение {пишу} отказано. Потом, когда я решил, что у меня есть разрешение { подключить } отказано. Затем снова вернемся к разрешению {write } denied.

после ответа @Sid выше проверки флагов с помощью getsebool -a | grep httpd и переключая их, я обнаружил, что в дополнение к httpd_can_network_connect отключен. http_anon_write также был отключен, что привело к отказ писать и отказано {подключить}

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

получено с помощью sudo cat/var/log/аудит / аудит.журнал | команда grep nginx в | грэп отказано как объяснялось выше.

поэтому я решил их по одному, переключая флаги по одному за раз.

setsebool httpd_can_network_connect on -P

затем запуск команд, указанных @sorin и @Joseph выше

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

в основном вы можете проверить набор разрешений на setsebool и соотнести это с ошибкой, полученной от аудит grepp подработок'.nginx в лог, отказано


Я тоже столкнулся с такой проблемой. Я использую Nginx с HHVM, ниже решения исправлена моя проблема:

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

sudo restorecon -R -v /etc/nginx/fastcgi_temp

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

sudo semodule -i mynginx.pp