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