Nginxで500エラーが発生し、狂ってしまいました。まず、サーバーブロックを含むpersonalsite.conf
アーカイブがあります。/etc/nginx/conf.d/
これは私のサーバーブロック構成です。
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;
}
}
また、nginxユーザーには適切な権限が割り当てられています/usr/share/nginx/html/personalsite/
。
問題は、私がナビゲートしようとすると、Nginxが500エラーを表示することです。面白いのは、ブラウザが空白に変わるためにpersonalsite.me
確認してみたので、これを知っていることです。personalsite.access.log
不明な理由から、Nginxは500エラーページを表示できません。ご覧のとおり、このページはサーバーブロックで正しく宣言されています。
もう一つの奇妙なことは、空でpersonalsite.error.log
何も記録されないということです。
また、私のプロフィールからドメイン名とそのIPを要求しました/etc/hosts
。だから私はここで何が起こっているのか本当にわかりません。
すべてがDigital Ocean VPSでCentOS 7を実行します。
答え1
ほとんどのエラーは、Nigixのセットアップ中に誤った設定が原因で発生します。ファイル(/etc/php-fpm.d/www.conf
)を確認してください。
vi /etc/php-fpm.d/www.conf
Listenパラメーターを指定する行を見つけて、次のように変更します。
listen = /var/run/php-fpm/php-fpm.sock
listen.owner
次に、これを設定してコメントを解除する行を見つけますlisten.group
。次のようにする必要があります。
listen.owner = nobody
listen.group = nobody
最後に、ユーザーとグループを設定する行を見つけて、その値を「apache」から「nginx」に変更します。
user = nginx
group = nginx
その後、保存して終了します。
/etc/init.d php-fpm restart
答え2
これは世界最高の答えではありませんが、500エラーはあいまいです。これはnginx設定に関連しているか、Webサイトのコンテンツに関連している可能性があります。問題が再現できるようになるまで、構成を最小化して再構築してください。
ウェブサイトのコンテンツをプレーンテキストのみを含む単純なindex.htmlに置き換えます。すべての追加エラー指示と位置ブロックを省略します。基本機能を設定したら、問題を引き起こす指示を隔離し、根本的な原因が見つかるまでテストを続けながら、無理なく追加の指示を追加できます。
答え3
PHP display_errorsが無効になっていると、PHPエラーが原因でNginx 500エラーが返されることがあります。
php-fpmログを確認する必要があります。そこでエラーを見つけることができると確信しています。 CentOS 7の場合:
tail -f /var/log/php-fpm/www-error.log
PHPエラーを表示することもできます。 /etc/php.ini で以下を変更します。
display_errors = Off
到着する:
display_errors = On
答え4
php-fpmを使用するには、/path/php/version/fpm//pool.d/でwww.confを編集する必要があります。
catch_workers_output = yes
この変更がなければ、php-fpmはログに記録しません。