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
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
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.