Rozwiązywanie wewnętrznego błędu serwera NGINX 500 dla klienta i serwera
Nginx (wymawiane Silnik-X), serwer WWW o otwartym kodzie źródłowym, udostępniony publicznie w październiku 2004 roku, pełni również funkcję modułu równoważenia obciążenia, odwrotnego proxy i pamięci podręcznej HTTP. Jego popularność i użyteczność potwierdzają liczne firmy technologiczne, takie jak Microsoft, Google, Facebook, Twitter i Apple.
Znaczenie błędu wewnętrznego serwera 500 w Nginx
Podobnie jak inne aplikacje i serwery, Nginx może napotykać błędy, które może zidentyfikować wbudowany system raportowania błędów. Jednak błąd wewnętrzny serwera 500 to wyjątkowa sytuacja. Ten błąd występuje również na różnych serwerach WWW, takich jak Apache i IIS.
Błąd 500 to kod stanu HTTP wskazujący na problem z serwerem, którego przyczyna nie została jednoznacznie zidentyfikowana. W przeciwieństwie do innych kodów stanu HTTP, takich jak 403 (Zabronione) lub 404 (Nie znaleziono), nie daje on żadnych wskazówek co do możliwej przyczyny.
Jak naprawić błąd 500 w Nginx od strony klienta?
Ten kod błędu wskazuje na problem po stronie serwera, który zazwyczaj można rozwiązać na samym serwerze. Jednak w rzadkich przypadkach przeglądarka może przyczynić się do problemu, generując żądanie, którego serwer nie może obsłużyć.
Aby sprawdzić, czy problem jest spowodowany przez przeglądarkę, otwórz stronę w innej przeglądarce, na innym urządzeniu i w innej sieci. Jeśli działa poprawnie, wyczyść pamięć podręczną/dane oryginalnej przeglądarki i upewnij się, że żadne rozszerzenia przeglądarki nie powodują problemu.
Jeśli na stronie Nginx nadal wyświetla się błąd 500, skontaktuj się z administratorem serwera, aby rozwiązać problem.
Jak naprawić błąd Nginx 500 po stronie serwera?
Ten błąd może wynikać z prostego błędu składniowego lub problemu z aplikacją back-end. Ponieważ błąd nie ujawnia przyczyny, rozwiązywanie problemów może być trudne. Nie martw się jednak, systematyczne podejście, które omówimy poniżej, może rozwiązać problem.
1. Sprawdź, czy serwer nie jest przeciążony
Jeśli serwer jest przeciążony, może wyświetlić wewnętrzny błąd 500 z powodu niewystarczających zasobów do wykonania niezbędnych zadań. Sprawdź użycie procesora, użycie pamięci i dostępność miejsca na dysku za pomocą poleceń Free, Top lub HTop. Poniższy zrzut ekranu przedstawia wynik po wykonaniu polecenia top.
Jeśli serwer jest przeciążony, dodanie większej ilości zasobów powinno rozwiązać błąd Nginx 500.
2. Sprawdzenie składni kompozycji
Najczęstszym powodem wystąpienia błędu 500 w Nginx są nieprawidłowe ustawienia serwera spowodowane błędem składni konfiguracji.
Aby rozwiązać ten problem, przejrzyj pliki konfiguracyjne Nginx i dokładnie sprawdź składnię, wyszukując ewentualne błędy lub nieprawidłowo umieszczone dyrektywy.
Następnie przejrzyj pliki konfiguracyjne Nginx pod kątem błędów składniowych lub błędnie umieszczonych dyrektyw. Użyj poleceń takich jak `nginx -t` lub `nginx -t -c /path/to/nginx.conf`, aby sprawdzić składnię i zidentyfikować ewentualne błędy. Uruchom następujące polecenia w terminalu, aby wykryć ewentualne błędy:
cd /etc/nginx/sites-available nginx -t
Możesz również użyć następujących opcji:
nginx -t -c /ścieżka/do/nginx.conf
Jeśli zostaną wykryte jakiekolwiek błędy składniowe, popraw je i wykonaj poniższe czynności, aby ponownie uruchomić/przeładować Nginx:
sudo service nginx restart nginx -s reload
W niektórych przypadkach może zaistnieć konieczność modyfikacji pliku konfiguracyjnego, jak pokazano poniżej:
try_files z try_files $uri =404
أو
try_files $uri $uri/ /index.html; z try_files $uri/ $uri /index.php?$query_string;
3. Sprawdzanie logów serwera
Gdy Nginx generuje błąd 500, tworzy również wpis w wewnętrznym dzienniku błędów, który może wskazywać przyczynę błędu. Dzienniki serwera zazwyczaj znajdują się w:
/var/log/nginx/error.log
W dystrybucji Linuksa wykonaj następujące czynności, aby otworzyć dziennik serwera:
cd /var/log/nginx cat error.log
Na stronie wyników możesz przejrzeć wszelkie wskaźniki przyczyny problemu. Na przykład, zobacz poniższy obraz:
Oznacza to, że serwer nie mógł nawiązać połączenia SSL/TLS z klientem z powodu problemu z certyfikatem SSL. Po zidentyfikowaniu problemu w logach możesz poszukać możliwych przyczyn i rozwiązań online.
Jeśli nie możesz otworzyć rejestru z powodu błędu „odmowa dostępu” do folderu, zmodyfikuj plik Nginx.conf, zastępując „user www-data” nazwą „user root”. Po zapisaniu pliku uruchom ponownie Nginx i spróbuj ponownie otworzyć rejestr.
4. Tymczasowo wyłącz Cloudflare lub podobne usługi
Jeśli na swoim serwerze używasz usługi Cloudflare lub podobnej i nie jest ona poprawnie skonfigurowana lub powoduje konflikty z ostatnimi aktualizacjami, tymczasowe jej wyłączenie może pomóc zdiagnozować problem.
- Iść do Panel sterowania Cloudflare Zaloguj się używając swoich danych.
- Iść do Przegląd (Przegląd) i rozwiń Zaawansowany (Ustawienia zaawansowane).
- dotknij Wstrzymaj witrynę (Zatrzymaj stronę) i potwierdź. Jeśli Twój dostawca hostingu oferuje integrację z Cloudflare, upewnij się, że jest ona również wyłączona.
- Upewnij się, że masz poprawne adresy IP dla witryny i sprawdź, czy wewnętrzny błąd serwera Nginx 500 został rozwiązany. Pamiętaj, aby sprawdzić zarówno wersję HTTP, jak i HTTPS witryny.
5. Zweryfikuj certyfikaty serwera
Jeśli którykolwiek z Twoich certyfikatów wygasł lub stał się nieważny w obecnych ustawieniach, z pewnością spowoduje to błąd na wewnętrznym serwerze.
- Skonfiguruj Nginx do użycia IP Dotyczy Twojej witryny, nie nazwy domeny.
- Wyłączyć Weryfikacja SSL W proxy_pass dodaj certyfikat podpisany samodzielnie. Możesz go utworzyć w panelu Cloudflare (SSL > Certyfikaty klienta).
- Sprawdź, czy serwer działa poprawnie. Jeśli tak, skontaktuj się z urzędem certyfikacji lub sprawdź ustawienia pod kątem nieprawidłowych konfiguracji certyfikatów.
6. Sprawdź, czy w aplikacjach zaplecza nie występują błędy
Jeśli Nginx przekierowuje żądania klienta do innej usługi, która nie wykonuje się poprawnie, powoduje to błąd 500. Na przykład, jeśli serwer przekierowuje żądania klienta do aplikacji zaplecza, takiej jak NodeJS, a aplikacja nie działa poprawnie, powoduje to wspomniany błąd.
Pamiętaj, że jeśli logi serwera nie wykazują błędów, zwykle oznacza to problem z zapleczem.
Aby rozwiązać ten problem, sprawdź logi aplikacji zaplecza pod kątem błędów lub wyjątków. Na przykład w WordPressie logi NodeJS znajdziesz w następującej ścieżce:
/var/www/ .com/logs/error.log
7. Niewystarczające uprawnienia do pliku
Jeśli serwer Nginx nie ma niezbędnych uprawnień do dostępu do pliku lub jego wykonania, pojawi się błąd 500. Na przykład wewnętrzny błąd serwera wystąpi w witrynie WordPress, jeśli serwer Nginx nie będzie mógł uzyskać dostępu do plików PHP lub HTML znajdujących się w folderze public_html ani ich udostępniać.
Aby to naprawić, możesz zmienić niezbędne uprawnienia Nginx dla plików lub katalogów, do których serwer uzyskuje dostęp, korzystając z polecenia chmodZwykle jest to 755 dla katalogów i 644 dla plików.
8. Sprawdzanie zgodności dodatków
Wtyczki odgrywają kluczową rolę w zwiększaniu możliwości serwera. Jednak wtyczki, które nie działają poprawnie, są przestarzałe lub nadmiernie aktualizowane, mogą powodować wewnętrzne błędy serwera. Na przykład aktualizacja WordPressa może zakłócić działanie witryny, ponieważ wiele wtyczek staje się niekompatybilnych, dopóki nie zostaną zaktualizowane.
Aby rozwiązać ten problem, upewnij się, że każde dodanie Zgodny Z oprogramowaniem serwera i innymi dodatkami. Choć może się to wydawać żmudne, warto włożyć w to wysiłek. Alternatywnie, spróbuj wyłączyć wszystkie dodatki, aby sprawdzić, czy to rozwiąże problem.
Jeśli niedawno zaktualizowałeś oprogramowanie serwera, spróbuj plecy Wróć do poprzedniej wersji (jeśli to możliwe), aby sprawdzić, czy błąd został rozwiązany. Pozwoli to potwierdzić, czy przyczyną problemu była aktualizacja. Możesz odłożyć aktualizację oprogramowania do czasu potwierdzenia zgodności wszystkich dodatków.
9. Sprawdź, czy skrypty nie są uszkodzone
Podobnie jak wtyczki, skrypty są kluczowe dla niektórych funkcji witryny. Uszkodzony, nieaktualny lub niezgodny skrypt może spowodować wewnętrzny błąd serwera.
Możesz rozwiązać ten problem przez Wyłączanie skryptów Sprawdź serwer Nginx. Jeśli działa poprawnie, przejrzyj skrypty i spróbuj zidentyfikować skrypty powodujące problem.
10. Zwiększ wartość limitu czasu serwera
Jeśli wartość limitu czasu serwera jest krótsza niż czas odpowiedzi Nginx, wystąpi wewnętrzny błąd serwera. Podobnie, jeśli żądanie serwera trwa dłużej niż czas odpowiedzi Nginx, problem wystąpi.
Zwiększenie limitu czasu serwera powinno rozwiązać problem. Szczegółowe instrukcje można znaleźć w Internecie.
11. Upewnij się, że wszystkie procesy przekierowania działają.
Upewnij się, że wszystkie procesy przekierowywania działają poprawnie, gdy Nginx działa jako serwer proxy. Jeśli serwer nie będzie w stanie przekierować żądania klienta do serwera zaplecza, wystąpi błąd 500.
Tymczasowo wyłącz wszystkie przekierowania Aby sprawdzić poprawność działania, w przypadku powodzenia, uruchom ponownie każdy proces osobno, aby zidentyfikować wadliwe przekierowanie. Po zidentyfikowaniu problemu wyszukaj w internecie możliwe przyczyny i rozwiązania tego konkretnego błędu przekierowania.
12. Używanie PHP z Nginx
Nginx nie obsługuje natywnie PHP, dlatego nieprawidłowa konfiguracja PHP w Nginx może doprowadzić do wewnętrznego błędu serwera.
Aby rozwiązać ten problem, sprawdź integrację PHP z Nginx. Jeśli wyświetlanie błędów PHP jest wyłączone, serwer zwróci błąd Nginx 500 w przypadku wystąpienia problemu z PHP. Włączenie wyświetlania błędów PHP może uprościć rozwiązywanie problemów.
W systemie CentOS 7 wykonaj następujące czynności:
ogon -f /var/log/php-fpm/www-error.log
Zamiast tego przejdź do
/etc/php.ini
I zmieniłem
display_errors = Off
Dla mnie
display_errors = Wł.
Możesz również poszukać lepszego procesora PHP (takiego jak PHP-FPM) i włączyć buforowanie Nginx.
13. Zastosuj podejście minimalistyczne.
Jeśli nadal nie możesz usunąć błędu 500, możesz zastosować podejście minimalistyczne, aby rozwiązać problem.
- Utworzony Utworzyć kopię zapasową Ze swojej witryny zastąp jej zawartość prostym plikiem index.html zawierającym zwykły tekst.
- Sprawdź, czy witryna Pracuje Zacznij dodawać kierunki, funkcje, usługi, wtyczki, skrypty itp., jeden po drugim.
- Po każdym kroku przetestuj witrynę i sprawdź, czy problem nadal występuje.
- Przywróć treść do swojej witryny i sprawdź, czy to ona jest przyczyną problemu.
- Gdy już znajdziesz element powodujący problem, możesz go rozwiązać, przeszukując Internet.
Jak uniknąć powtarzania się błędu serwera Nginx 500 w przyszłości
Aby uniknąć ponownego wystąpienia błędu Nginx 500, możesz wykonać następujące czynności:
- Wykonuj regularną konserwację serwera.
- Upewnij się, że kod i treść witryny (obrazy, filmy itp.) są zoptymalizowane pod kątem Twoich ustawień.
- Utwórz sieć dostarczania treści (CDN) obsługującą witrynę za pośrednictwem jej pamięci podręcznej.
Jeśli masz jakieś pytania, możesz je zadać w sekcji komentarzy.
Możliwość dodawania komentarzy nie jest dostępna.