Hoe repareer ik een onbekende interne serverfout (500) die Nginx mij geeft?

Nginx geeft me een 500-fout die “me gek maakt. Allereerst heb ik een personalsite.conf archief binnen /etc/nginx/conf.d/ waar ik mijn serverblok heb.

Dit is mijn serverblokconfiguratie:

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; } } 

Plus nginx-gebruiker heeft de juiste rechten toegewezen aan /usr/share/nginx/html/personalsite/.

Het punt is dat Nginx me een 500-fout geeft wanneer ik probeer te bladeren door personalsite.me, en het grappige is dat ik dat weet omdat ik de personalsite.access.log heb gecontroleerd en zie, omdat de browser gewoon leeg gaat. Om onbekende redenen Nginx kan me de 500-foutpagina niet laten zien, correct gedeclareerd in het serverblok zoals je kunt zien.

Een ander vreemd ding is dat personalsite.error.log leeg is, het neemt niets op.

Ook heb ik dat domein met zijn IP aangegeven in mijn /etc/hosts archief. Dus ik heb echt geen idee wat hier gebeurt.

Alles is r Unning CentOS 7 over een Digital Ocean VPS.

Antwoord

De meeste fouten worden veroorzaakt door een verkeerde configuratie bij het instellen van Nigix. Ik zal voorstellen om het bestand (/etc/php-fpm.d/www.conf) te controleren.

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

Zoek de regel die de luisterparameter specificeert, en verander het zodat het er als volgt uitziet:

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

Zoek vervolgens de regels die de listen.owner en listen.group en verwijder commentaar. Ze zouden er als volgt uit moeten zien:

listen.owner = nobody listen.group = nobody 

Zoek ten slotte de regels die de gebruiker en de groep instellen en verander hun waarden van “apache” naar “nginx”:

user = nginx group = nginx 

Sla vervolgens op en sluit af

/etc/init.d php-fpm restart 

Antwoord

Niet het beste antwoord ter wereld, maar een 500-fout is te dubbelzinnig. Het kan uw nginx-configuratie zijn of kan verband houden met uw site-inhoud. Minimaliseer uw configuratie en herbouw totdat u het probleem kunt reproduceren.

Vervang de inhoud van de site door een eenvoudige index.html met alleen wat platte tekst erin. Laat alle extra foutinstructies en het locatieblok weg. Als je eenmaal de basisfunctionaliteit hebt vastgesteld, kun je je minder gek voelen en je andere richtlijnen toevoegen, terwijl je test, totdat je een richtlijn isoleert die problemen veroorzaakt en van daaruit de hoofdoorzaak kunt vinden.

Reacties

  • Dat hielp me eigenlijk te begrijpen dat mijn Nginx in orde is. Het probleem is dat de website die ik ' m probeer uit te voeren. Ik heb alle inhoud vervangen door slechts een phpinfo.php -bestand en het werkt perfect. De website die ik ' m probeer te draaien, gebruikt Yii Framework. Ik heb de officiële wiki gecontroleerd en er staat: " Software is nginx, php-fpm (php5-fpm). Voor prestaties wordt ' s aanbevolen om php-fpm in SOCKET-modus uit te voeren, in plaats van toegang te krijgen via IP: PORT. Dat is de hieronder getoonde methode " Ik ' m gebruik ik Nginx precies zo. Dus ik heb geen idee waarom het me een 500-fout geeft en niet op de error.log zal schrijven.

Answer

Als PHP display_errors zijn uitgeschakeld, kunnen PHP-fouten een Nginx 500-fout retourneren.

Je zou je php-fpm-logboeken moeten bekijken, ik weet zeker dat je de fout daar zult vinden. Met CentOS 7:

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

Je kunt ook PHP-fouten weergeven. Wijzig in /etc/php.ini:

display_errors = Off 

in:

display_errors = On 

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *