Jak naprawić nieznany wewnętrzny błąd serwera (500), który daje mi Nginx?

Nginx podaje mi błąd 500, który doprowadza mnie do szału. Przede wszystkim mam personalsite.conf archiwum wewnątrz /etc/nginx/conf.d/, gdzie mam mój blok serwera.

To jest moja konfiguracja bloku serwera:

server { listen 80; server_name personalsite.me; charset UTF-8; access_log /var/log/nginx/personalsite.access.log main; error_log /var/log/nginx/personalsite.error.log; root /usr/share/nginx/html/personalsite; index index.php index.html index.htm; error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html/; } location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } 

Dodatkowo użytkownik nginx ma swoje odpowiednie uprawnienia przypisane do /usr/share/nginx/html/personalsite/.

Rzecz w tym, że Nginx daje mi błąd 500, kiedy próbuję przeglądać personalsite.me, a zabawne jest to, że wiem o tym, ponieważ sprawdziłem personalsite.access.log i widzę, ponieważ przeglądarka po prostu gaśnie. Z nieznanych powodów Nginx nie może pokazać mi swojej strony błędu 500, poprawnie zadeklarowanej w bloku serwera, jak widać.

Kolejną dziwną rzeczą jest to, że personalsite.error.log jest puste, nic nie rejestruje.

Ponadto mam tę domenę zadeklarowaną wraz z jej adresem IP w moim archiwum /etc/hosts. Więc naprawdę nie mam pojęcia, co się tutaj dzieje.

Wszystko jest r unning CentOS 7 przez VPS Digital Ocean.

Odpowiedź

Większość błędów wynika z błędnej konfiguracji podczas instalacji Nigix. Zasugeruję sprawdzenie pliku (/etc/php-fpm.d/www.conf).

vi /etc/php-fpm.d/www.conf 

Znajdź wiersz określający parametr nasłuchiwania i zmień go tak, aby wyglądał następująco:

listen = /var/run/php-fpm/php-fpm.sock 

Następnie znajdź wiersze, które ustawiają listen.owner i listen.group i odkomentuj je. Powinny wyglądać tak:

listen.owner = nobody listen.group = nobody 

Na koniec znajdź wiersze określające użytkownika i grupę i zmień ich wartości z „apache” na „nginx”:

user = nginx group = nginx 

Następnie zapisz i zakończ

/etc/init.d php-fpm restart 

Odpowiedz

Nie najlepsza odpowiedź na świecie, ale błąd 500 jest zbyt niejednoznaczny, może to być konfiguracja nginx lub może być związany z zawartością Twojej witryny. Zminimalizuj konfigurację i przebuduj, aż będziesz mógł odtworzyć problem.

Zastąp zawartość witryny prostym plikiem index.html, zawierającym tylko zwykły tekst. Pomiń wszystkie dodatkowe dyrektywy błędów i blok lokalizacji. Po ustaleniu podstawowej funkcjonalności możesz poczuć się mniej szalony i dodawać inne dyrektywy, testując w trakcie, aż wyizolujesz każdą dyrektywę powodującą problemy i znajdziesz stamtąd główną przyczynę.

Komentarze

  • Właściwie to pomogło mi zrozumieć, że mój Nginx jest w porządku. Problem polega na tym, że ' witryna, którą próbuję uruchomić. Zastąpiłem całą zawartość tylko plikiem phpinfo.php i działa idealnie. Witryna, którą ' m próbuję uruchomić, używa frameworka Yii. Sprawdziłem oficjalną wiki i jest na niej napisane: " Oprogramowanie to nginx, php-fpm (php5-fpm). Ze względu na wydajność ' zaleca się uruchamianie php-fpm w trybie SOCKET zamiast dostępu przez IP: PORT. To jest metoda pokazana poniżej " I ' m używając Nginx dokładnie w ten sposób. Nie mam więc pojęcia, dlaczego wyświetla mi się błąd 500 i nie będę pisać w pliku error.log.

Odpowiedź

Kiedy PHP display_errors jest wyłączone, błędy PHP mogą zwracać błąd Nginx 500.

Powinieneś przejrzeć swoje logi php-fpm, jestem pewien, że znajdziesz tam błąd. Z CentOS 7:

tail -f /var/log/php-fpm/www-error.log 

Możesz także wyświetlać błędy PHP. W /etc/php.ini zmień:

display_errors = Off 

na:

display_errors = On 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *