Nginxで発生した不明な内部サーバーエラー(500)を解決するには?

Nginxで発生した不明な内部サーバーエラー(500)を解決するには?

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はログに記録しません。

関連情報