(13: İzin reddedildi) yukarı akışa bağlanırken: [nginx]


296

Nginx ve Gunicorn ile Django projesini yapılandırmak için çalışıyorum.

gunicorn mysite.wsgi:application --bind=127.0.0.1:8001Nginx sunucusundaki bağlantı noktasına erişirken , hata günlüğü dosyamda şu hatayı alıyorum;

2014/05/30 11:59:42 [ölçüt] 4075 # 0: * 6 127.0.0.1:8001'e bağlan () başarısız oldu (13: İzin reddedildi) yukarı akışa bağlanırken, istemci: 127.0.0.1, sunucu: localhost, istek: "GET / HTTP / 1.1", akış yukarı:, "http://127.0.0.1:8001/"ana bilgisayar: "localhost: 8080"

Dosyamın içeriği aşağıda nginx.conf;

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 sayfasında alıyorum 502 Bad Gateway.

Ne hata yapıyorum?

Yanıtlar:


683

Fedora 20, Nginx, Node.js ve Ghost'un (blog) çalışmasını sağlamak için benzer bir sorun yaşadım. Benim sorunum SELinux'dan kaynaklanıyor .

Bu sorunu çözmelidir:

setsebool -P httpd_can_network_connect 1

ayrıntılar

SELinux günlüklerindeki hataları kontrol ettim:

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

Ve aşağıdaki komutları çalıştırmanın sorunumu çözdüğünü buldum:

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

Referanslar:

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


22
Teşekkürler, bu da sorunumu çözdü, CentOS 7'deyim.
Jahan

21
Teşekkürler. İlk yum install policycoreutils-pythonolmak için ihtiyacım vardı audit2allow. Referans: centos.org/forums/viewtopic.php?t=5012
gross.jonas

Bir düğüm sunucusu kullanarak benim için çok teşekkürler. (Redhat 7)
BlaShadow

Ayrıca buraya bakınız . Benim durumumda, wwwroot ana dizininde saklanan kullanıcının grubuna nginx eklemek zorunda kaldım.

1
Fedora 23'te yükleme policycoreutils-pythonkomutu vermedi audit2allow. Biraz araştırma yaptıktan sonra devel paketini kurman gerektiğini buldum yum install policycoreutils-devel. Referans: danwalsh.livejournal.com/61710.html
Joseph N.

182

Ben de bu problemle karşılaştım. Başka bir çözüm, httpd ağ bağlantısı için SELinux boole değerini değiştirmektir on(Nginx httpd etiketini kullanır).

setsebool httpd_can_network_connect on

Değişikliği devam ettirmek için -P bayrağını kullanın.

setsebool httpd_can_network_connect on -P

Httpd için mevcut tüm SELinux booleans listesini görebilirsiniz

getsebool -a | grep httpd

1
Bu işe yaradı, teşekkürler. CentOS 6.5 -> 6.7'den güncelleme yaptım ve güncelleme sırasında varsayılan olarak kapalı olarak ayarlanmış olmalı, çünkü güncelleme öncesi iyi çalışıyordu. Basit düzeltme.
Mike Purcell

16

Centos 7'de de benzer bir sorun vardı. Sorin tarafından önerilen çözümü uygulamaya çalıştığımda, döngüler halinde hareket etmeye başladım. Önce {write} iznim vardı. Sonra {connectto} iznim olduğunu çözdüğümde reddedildim. Sonra tekrar {write} iznine reddedildi.

Yukarıdaki bayrakları kullanarak getsebool -a | grep httpdve yanıtlayarak @Sid cevabını takiben httpd_can_network_connect kapalı olmak ek olarak bulundu. http_anon_write da izin verilmedi yazma izni reddedildi ve izin reddedildi {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

Sudo cat / var/log/audit/audit.log kullanılarak elde edildi | grep nginx | grep yukarıda açıklandığı gibi reddedildi.

Bu yüzden her seferinde bir tane çözdüm, bayrakları birer birer değiştirdim.

setsebool httpd_can_network_connect on -P

Daha sonra @sorin ve @Joseph tarafından belirtilen komutları çalıştırın

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

Temel olarak setsebool üzerinde ayarlanan izinleri kontrol edebilir ve bunu grepp'ing 'audit.log nginx' den alınan hata ile ilişkilendirebilirsiniz.


14

Şu anda giriş yaptığım kullanıcı olarak Nginx'imi çalıştırarak sorunumu çözdüm , mulagala .

Varsayılan olarak, kullanıcı nginxnginx.conf olarak aşağıda görüldüğü gibi dosyanın en üst bölümünde tanımlanır ;

user nginx; # Default Nginx user

Değişim nginx burada, - Geçerli kullanıcının adının mulagala .

user mulagala; # Custom Nginx user (as username of the current logged in user)

Bununla birlikte, bu gerçek sorunu ele almayabilir ve aslında geçici yan etkilere sahip olabilir.

Etkili bir çözüm için lütfen Joseph Barbere'nin çözümüne bakın .


Bu konuda bana yardımcı olan teşekkür ederim
Overlord

4

"502 Bozuk Ağ Geçidi" hatası nginx üzerinde api ağ geçidi proxy geçişi için centos api url atarsa, sorunu çözmek için aşağıdaki komutu çalıştırın

sudo setsebool -P httpd_can_network_connect 1

2

13-centos sunucusunda upstreamnginx'e bağlanırken izin verilmedi -

setsebool -P httpd_can_network_connect 1


1

Ben de bu problemle karşılaştım. HHVM ile Nginx kullanıyorum, aşağıdaki çözüm sorunumu düzeltti:

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

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

1
  1. İçindeki kullanıcıyı kontrol et /etc/nginx/nginx.conf
  2. Sahipliği kullanıcıya değiştirin.
sudo chown -R nginx:nginx /var/lib/nginx

Şimdi büyüye bakın.


0

Çok teşekkür ederim. Bu kılavuzu uyguladım: Centos 7, AspNet Core 3.1, Nginx kurulumu.


0

Cevaplar için teşekkürler. Kumar'ın 21 Ağustos 19, 12:14'teki cevabı, yaşadığım sorunu giderdikten birkaç gün sonra bana bir mühlet verdi, yani:

connect() to 127.0.0.1:9090 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server

Uyguladığım çözüm aşağıdaki gibiydi:

setsebool -P httpd_can_network_connect 1

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

sudo semodule -i mynginx.pp
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.