Hvordan fikser jeg en ukjent intern serverfeil (500) som Nginx gir meg?

Nginx gir meg en 500-feil som gjør meg gal. Først og fremst har jeg en personalsite.conf arkiv i /etc/nginx/conf.d/ der jeg har serverblokken min.

Dette er konfigurasjonen for serverblokken min:

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-brukere har de rette tillatelsene tildelt over /usr/share/nginx/html/personalsite/.

Saken er at Nginx gir meg en 500-feil når jeg prøver å bla gjennom personalsite.me, og det morsomme er at jeg vet det fordi jeg sjekket personalsite.access.log og ser det, fordi broweren bare blir tom. Av ukjente årsaker Nginx kan ikke vise meg sin 500-feilside, riktig erklært i serverblokken som du kan se.

En annen merkelig ting er at personalsite.error.log er tomt, det registrerer ingenting.

Også jeg har det domenet deklarert med sin IP i /etc/hosts arkivet. Så jeg aner ikke hva som skjer her.

Alt er r unning CentOS 7 over en Digital Ocean VPS.

Svar

De fleste feilene kommer ut på grunn av feilkonfigurasjon når Nigix-oppsett. Jeg vil foreslå å sjekke fil (/etc/php-fpm.d/www.conf).

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

Finn linjen som spesifiserer lytteparameteren, og endre det slik at det ser ut som følgende:

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

Finn deretter linjene som setter listen.owner og listen.group og fjern kommentarene til dem. De skal se slik ut:

listen.owner = nobody listen.group = nobody 

Til slutt finner du linjene som setter brukeren og gruppen og endrer verdiene fra «apache» til «nginx»:

user = nginx group = nginx 

Lagre og avslutt deretter

/etc/init.d php-fpm restart 

Svar

Ikke det beste svaret i verden, men en 500-feil er tvetydig, det kan være din nginx-konfigurasjon eller kan være relatert til innholdet på nettstedet ditt. Minimer konfigurasjonen og gjenoppbygg til du kan gjengi problemet.

Erstatt nettstedsinnholdet med en enkel index.html med bare ren tekst i den. Utelat alle ekstra feildirektivene og plasseringsblokken. Når du har etablert den grunnleggende funksjonaliteten, kan du føle deg mindre sinnssyk og legge til andre direktiver, mens du tester mens du går, til du vil isolere ethvert direktiv som forårsaker problemer og kan finne årsaken derfra.

Kommentarer

  • Egentlig hjalp det meg til å forstå at Nginx-enheten min er ok. Problemet er at nettstedet jeg ' prøver å kjøre. Jeg byttet ut alt innholdet med bare en phpinfo.php -fil, og den går perfekt. Nettstedet jeg ' prøver å kjøre, bruker Yii Framework. Jeg sjekket den offisielle wiki og det står: " Programvaren er nginx, php-fpm (php5-fpm). For ytelse anbefales det ' å kjøre php-fpm i SOCKET-modus, i stedet for å få tilgang via IP: PORT. Det er metoden vist nedenfor " I ' m ved å bruke Nginx akkurat slik. Så jeg aner ikke hvorfor det gir meg en 500 feil og ikke skriver på feilen. Log.

Svar

Når PHP display_errors er deaktivert, kan PHP-feil returnere Nginx 500-feil.

Du bør ta en titt på php-fpm-loggene, jeg er sikker på at du vil finne feilen der. Med CentOS 7:

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

Du kan også vise PHP-feil. I /etc/php.ini, endre:

display_errors = Off 

til:

display_errors = On 

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *