Aktualizuję nginx do 1.4.7 i php do 5.5.12 , po czym dostałem błąd 502 . Przed aktualizacją wszystko działa dobrze.
nginx-error.log
2014/05/03 13:27:41 [crit] 4202#0: *1 connect() to unix:/var/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: xx.xxx.xx.xx, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "xx.xx.xx.xx"
nginx.conf
user www www;
worker_processes 1;
location / {
root /usr/home/user/public_html;
index index.php index.html index.htm;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/home/user/public_html$fastcgi_script_name;
include fastcgi_params;
}
Odpowiedzi:
Miałem podobny błąd po aktualizacji php. PHP naprawiło błąd bezpieczeństwa, który
o
miałrw
uprawnienia do pliku gniazda./etc/php5/fpm/pool.d/www.conf
lub/etc/php/7.0/fpm/pool.d/www.conf
, w zależności od wersji.Odkomentuj wszystkie linie uprawnień, takie jak:
Uruchom ponownie fpm -
sudo service php5-fpm restart
lubsudo service php7.0-fpm restart
Uwaga : jeśli twój serwer działa jako użytkownik inny niż www-data, musisz odpowiednio zaktualizować
www.conf
plikźródło
sudo usermod -aG www-data nginx
umożliwia nginx dostęp do plikuWszystkie wspomniane obecnie poprawki zasadniczo powodują ponowne otwarcie dziury w zabezpieczeniach.
Skończyło się na tym, że dodałem następujące wiersze do mojego pliku konfiguracyjnego PHP-FPM.
Upewnij się, że dane www to tak naprawdę użytkownik, na którym działa pracownik nginx. W przypadku Debiana domyślnie są to dane www.
Wykonanie tego w ten sposób nie włącza problemu bezpieczeństwa, który ta zmiana miała naprawić .
źródło
ps aux|grep nginx
/var/run/php5-fpm.sock
, ponieważ został już utworzony przezwww-data
. Tylko heads-up ...Rozwiązanie @ Xander działa, ale nie utrzymuje się po ponownym uruchomieniu.
Okazało się, że musiałem zmienić
listen.mode
się0660
w/etc/php5/fpm/pool.d/www.conf
.Próbka z www.conf:
Edycja: Na @Chris Burgess zmieniłem to na bezpieczniejszą metodę.
Usunąłem komentarz dla Listen.mode, .group i .owner:
/ var / run Przechowuje tylko informacje o systemie uruchomionym od ostatniego uruchomienia, np. aktualnie zalogowani użytkownicy i uruchomione demony. ( http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard#Directory_structure ).
Dygresja:
Moje
php5-fpm -v
raporty:PHP 5.4.28-1+deb.sury.org~precise+1
. Problem pojawił się również po ostatniej aktualizacji.źródło
listen.acl_groups
jest ustawionelisten.owner
ilisten.group
są ignorowane. Ustawiłemlisten.acl_groups =
, a następnie problem 502 / uprawnień zniknął. Znalazłem go po odkomentowaniulisten.
linii jak wyżej, problem 502 nadal występował isystemctl status php-fpm
pokazał ostrzeżenieWARNING: [pool www] ACL set, listen.owner = 'nobody' is ignored
.Jeśli wypróbowałeś już wszystko w tym poście, ale nie udało ci się uzyskać PHP do pracy, to naprawiło to w moim przypadku:
Upewnij się, że te wiersze nie są komentowane w /etc/php5/fpm/pool.d/www.conf:
Upewnij się, że / etc / nginx / fastcgi_params wygląda następująco:
Tych dwóch linii brakowało w moim / etc / nginx / fastcgi_params, upewnij się, że tam są!
Następnie zrestartuj php5-fpm i nginx. Powinien załatwić sprawę.
źródło
W rzeczywistości „Listen.mode” powinno brzmieć: „0660”, a nie „0666”, ponieważ Inne zapisywalne lub inne czytelne nigdy nie są tutaj dobrym wyborem.
Spróbuj więc dowiedzieć się, który użytkownik / grupa działa na twoim serwerze. Używam CentO i działa jako użytkownik „nginx”. Dodaj więc do swojego php-fpm.conf:
w końcu zrestartuj php-fpm
źródło
www-data
.Sprawdź, który użytkownik uruchamia nginx. Począwszy od Ubuntu 12.04 nginx jest uruchamiany przez użytkownika nginx, który nie jest członkiem grupy danych www.
i ponowne uruchomienie demonów nginx i php5-fpm rozwiązuje problem.
źródło
Alternatywnie do rozszerzania uprawnień w konfiguracji php, możesz zmienić użytkownika określonego w konfiguracji nginx.
W pierwszym wierszu fragmentu nginx.conf powyżej użytkownik i grupa są określone odpowiednio jako www i www.
Tymczasem twoja konfiguracja php prawdopodobnie określa użytkownika i grupę danych www:
Możesz zmienić wiersz w pliku nginx.conf na dowolny z poniższych, a następnie:
źródło
Należy również wziąć pod uwagę ewentualne indywidualne pule FPM.
Nie mogłem zrozumieć, dlaczego żadna z tych odpowiedzi nie działała dzisiaj dla mnie. Był to dla mnie scenariusz „ustaw i zapomnij”, w którym zapomniałem, że listen.user i listen.group zostały zduplikowane dla poszczególnych pul.
Jeśli używałeś pul dla różnych kont użytkowników, tak jak ja, gdzie każde konto użytkownika ma swoje procesy i gniazda FPM, ustawienie tylko domyślnych opcji konfiguracji nasłuchiwania i nasłuchiwania grupy na „nginx” po prostu nie zadziała. I oczywiście, pozwolenie, by „nginx” był ich właścicielem, jest również nie do przyjęcia.
Upewnij się, że dla każdej puli
W przeciwnym razie możesz zostawić własność puli i takie w spokoju.
źródło
Właśnie dostałem ten błąd dzisiaj, kiedy zaktualizowałem swój komputer (z aktualizacjami dla PHP) z Ubuntu 14.04 . Plik konfiguracyjny dystrybucji
/etc/php5/fpm/pool.d/www.conf
jest w porządku i obecnie nie wymaga żadnych zmian.Znalazłem następujące błędy:
Dziwną rzeczą było to, że mam uruchomione 2 strony wykorzystujące PHP-FPM na tej maszynie, jedna działała dobrze, a druga (instalacja Tiny Tiny RSS) dała mi 502, przy czym obie działały wcześniej dobrze .
Porównałem oba pliki konfiguracyjne i okazało się, że
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
brakowało tej witryny.Oba pliki konfiguracyjne zawierają teraz następujący blok i działają poprawnie:
Aktualizacja
Należy zauważyć, że Ubuntu dostarcza dwa pliki parametrów związane z fastcgi, a także fragment konfiguracji, który jest dostępny od Vivid, a także w wersji PPA . Rozwiązanie zostało odpowiednio zaktualizowane.
Zróżnicowane pliki parametrów fastcgi:
Fragment konfiguracji w
/etc/nginx/snippets/fastcgi-php.conf
źródło
Poniższa prosta poprawka zadziałała dla mnie, omijając możliwe problemy z uprawnieniami w gnieździe.
W konfiguracji nginx ustaw fastcgi_pass na:
Zamiast
Musi to zgadzać się z parametrem listen = w /etc/php5/fpm/pool.d/www.conf, więc ustaw także:
Następnie uruchom ponownie php5-fpm i nginx
I
Aby uzyskać więcej informacji, zobacz: https://wildlyinaccurate.com/solving-502-bad-gateway-with-nginx-php-fpm/
źródło
Problem w moim przypadku polegał na tym, że serwer WWW Nginx działał jako użytkownik nginx, a pula działała jako dane www użytkownika.
Rozwiązałem problem, zmieniając użytkownika, na którym działa Nginx w
/etc/nginx/nginx.conf
pliku (może być inny w twoim systemie, mój to Ubuntu 16.04.1)Zmiana:
user nginx;
do:
user www-data;
następnie uruchom ponownie Nginx:
service nginx restart
źródło
Proste, ale działa ..
źródło
Naprawiłem ten sam problem na Amazon Linux AMI 2016.09 (Centos 7), wykonując następujące kroki.
Otwórz pliki www.conf (przykład: sudo nano /etc/php-fpm.d/www.conf) Na koniec znajdź linie, które ustawiają listen.owner i listen.group i zmień ich wartości z „nobody” na „nginx” „:
Na koniec znajdź linie, które ustawiają użytkownika i grupę, i zmień ich wartości z „apache” na „nginx”:
Uruchom ponownie php-fpm (usługa sudo php-fpm restart)
źródło
Najważniejszą rzeczą tutaj jest to, który użytkownik używa nginx, a następnie musisz go również podać
w twoim nginx.conf
w twoim www.conf
w twoim przypadku użytkownik i grupa to „www”, więc po prostu go zastąp.
źródło
Jeśli masz inną pulę dla użytkownika, upewnij się, że użytkownik i grupa są poprawnie ustawione w pliku konfiguracyjnym. Możesz znaleźć użytkownika nginx w pliku /etc/nginx/nginx.conf. Grupa nginx jest taka sama jak użytkownik nginx.
źródło
Sprawdź także SELINUX (/ etc / selinux):
Wyłącz to:
źródło
Zobacz
/etc/php5/php-fpm.conf pid = /var/run/php5-fpm.pid
plik IS PIDW pliku
/etc/php5/fpm/pool.d/www.conf
listen = /var/run/php5-fpm.sock
Plik IS SOCKETjeśli pid równa nasłuchiwanie (
pid = /var/run/php5-fpm.sock and listen = /var/run/php5-fpm.sock
) -> złe ustawienia i zakończenie ustawiania/etc/php5/fpm/pool.d/www.conf
źródło
Po aktualizacji z Ubuntu 14.04 lts do Ubuntu 16.04 lts znalazłem jeszcze jeden powód tego błędu, którego nie widziałem wcześniej.
Podczas procesu aktualizacji jakoś straciłem mój plik wykonywalny php5-fpm. Wszystkie pliki konfiguracyjne były nienaruszone i zajęło mi to trochę czasu
service php5-fpm start
tak naprawdę nie uruchomiłem procesu, ponieważ nie pokazałem żadnych błędów.Mój moment przebudzenia nastąpił, gdy zauważyłem, że nie ma pliku gniazda
/var/run/php5-fpm.sock
, tak jak powinien, ani nienetstat -an
pokazałem procesów nasłuchujących na porcie, które próbowałem alternatywnie, próbując rozwiązać ten problem. Ponieważ plik / usr / sbin / php5-fpm również nie istniał, w końcu byłem na dobrej drodze.Aby rozwiązać ten problem zaktualizowałem php z wersji 5.5 do 7.0.
apt-get install php-fpm
zrobił lewę jako efekt uboczny. Po zainstalowaniu innych niezbędnych pakietów wszystko wróciło do normy.To rozwiązanie uaktualniające może mieć własne problemy . Ponieważ php ewoluował całkiem sporo, oprogramowanie może się zepsuć w niewyobrażalny sposób. Tak więc, mimo że podążyłem tą ścieżką, możesz chcieć dłużej zachować wersję, którą lubisz.
Na szczęście wydaje się, że jest na to dobry sposób , jak opisano na stronie The Customize Windows:
Choć może to być lepsze rozwiązanie, nie próbowałem tego. Oczekuję, że następne kilka dni powie mi, czy powinienem.
źródło
W moim przypadku php-fpm wcale nie działało, więc musiałem tylko uruchomić usługę 😂
źródło
Miałem podobny błąd.
Wszystkie rekomendacje nie pomogły.
Jedyne zastępcze dane www z nginx pomogły:
/var/www/php/fpm/pool.d/www.conf
źródło
Aby dodać, w CentOS (i prawdopodobnie w Red Hat i Fedorze) plik do zmiany uprawnień to:
źródło
Kilka razy zmieniłem system operacyjny na moim serwerze, starając się uzyskać najwygodniejszy system.
Kiedyś działało bardzo dobrze przez większość czasu, ale w końcu dostałem ten błąd bramki 502.
Korzystam z php fpm dla każdego konta zamiast tego samego dla wszystkich. Więc jeśli jedna z nich ulegnie awarii, przynajmniej inne aplikacje będą nadal działać.
Kiedyś miałem dane użytkowników i grup www. Ale zmieniło się to w moim Debianie 8 z najnowszym Nginx 1.8 i php5-fpm.
Domyślnym użytkownikiem jest nginx, podobnie jak grupa. Aby być tego pewnym, najlepszym sposobem jest sprawdzenie plików / etc / group i / etc / passwd. Nie mogą kłamać.
To tam odkryłem, że teraz mam nginx zarówno w danych www, jak i nie.
Może to może pomóc niektórym osobom nadal próbować dowiedzieć się, dlaczego komunikat o błędzie wciąż się pojawia.
To zadziałało dla mnie.
źródło
Dla tych, którzy próbowali wszystkiego w tym wątku i nadal utknęli: to rozwiązało mój problem. Zaktualizowałem /usr/local/nginx/conf/nginx.conf
Odkomentuj powiedzenie linii
user
spraw,
www-data
aby stało się:user www-data;
Zapisz (wymagany dostęp root)
Uruchom ponownie nginx
źródło
Jeśli masz deklaracje
i
w różnych plikach konfiguracyjnych, root będzie właścicielem tego pliku.
źródło