未知の内部サーバーエラー(500)を修正する方法Nginxは私に与えていますか?

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/を介して割り当てられた適切な権限があります。

ですが、面白いのは、personalsite.access.logをチェックして確認したので、ブラウザが空白になったためです。理由は不明です。ご覧のとおり、Nginxはサーバーブロックで適切に宣言された500エラーページを表示できません。

もう1つの奇妙な点は、personalsite.error.logが空白になっていることです。何も記録されません。

また、/etc/hostsアーカイブでそのドメインをIPで宣言しているので、ここで何が起こっているのか本当にわかりません。

すべてがrですDigital OceanVPSを介してCentOS7をアンニングします。

回答

ほとんどのエラーは、Nigixのセットアップ時の設定ミスが原因で発生します。ファイル(/etc/php-fpm.d/www.conf)を確認することをお勧めします。

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

listenパラメーターを指定する行を見つけて、次のように変更します。

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

次に、listen.ownerlisten.groupそしてコメントを外します。次のようになります。

listen.owner = nobody listen.group = nobody 

最後に、ユーザーとグループを設定する行を見つけて、値を「apache」から「nginx」に変更します。

user = nginx group = nginx 

保存して終了

/etc/init.d php-fpm restart 

回答

世界で最良の答えではありませんが、500エラーはあいまいです。これは、nginx構成であるか、サイトコンテンツに関連している可能性があります。問題を再現できるようになるまで、構成を最小限に抑えて再構築します。

サイトのコンテンツを、プレーンテキストのみを含む単純なindex.htmlに置き換えます。余分なエラーディレクティブとロケーションブロックはすべて省略してください。基本的な機能を確立したら、問題の原因となっているディレクティブを特定し、そこから根本原因を見つけるまで、気が狂いを感じずに他のディレクティブを追加して、テストを進めていきます。

コメント

  • 実際、Nginxに問題がないことを理解するのに役立ちました。問題は、実行しようとしているWebサイト'にあります。すべてのコンテンツをphpinfo.phpファイルに置き換えたところ、完全に実行されました。実行しようとしているWebサイト'は、Yiiフレームワークを使用しています。公式ウィキを確認したところ、"ソフトウェアはnginx、php-fpm(php5-fpm)です。パフォーマンスのために、IP:PORT経由ではなく、SOCKETモードでphp-fpmを実行することをお勧めします'。これは、以下に示す方法です" I ' mはまさにそのようにNginxを使用しています。そのため、なぜ500エラーが発生し、error.logに書き込まれないのかわかりません。

回答

PHP display_errorsが無効になっている場合、PHPエラーはNginx500エラーを返す可能性があります。

php-fpmログを確認する必要があります。エラーはそこにあります。 CentOS 7の場合:

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

PHPエラーを表示することもできます。 /etc/php.iniで、:

display_errors = Off 

を:

display_errors = On 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です