クライアントとサーバーのNGINX内部サーバーエラー500の解決

Nginx(発音は エンジンX2004年10月に公開されたオープンソースのウェブサーバーであるHTTPSは、ロードバランサー、リバースプロキシ、HTTPキャッシュとしても機能します。その人気と有用性は、Microsoft、Google、Facebook、Twitter、Appleといった著名なテクノロジー企業に採用されていることからも明らかです。

nginx

Nginxにおける500内部サーバーエラーの意味

他のソフトウェアアプリケーションやサーバーと同様に、Nginxでもエラーが発生する可能性がありますが、組み込みのエラー報告システムによって特定できます。ただし、500 内部サーバーエラーは特殊な状況です。このエラーは、ApacheやIISなど、さまざまなWebサーバーでも発生します。

Nginx 内部サーバーエラー 500

エラー500は、根本原因が明確に特定されていないサーバーの問題を示すHTTPステータスコードです。403(Forbidden)や404(Not Found)などの他のHTTPステータスコードとは異なり、考えられる原因に関する手がかりは提供されません。

クライアント側から Nginx のエラー 500 を修正するにはどうすればいいですか?

このエラーコードはサーバー側の問題を示しており、通常はサーバー側で解決できます。ただし、まれに、ブラウザがサーバーが処理できないリクエストを作成することで、問題の原因となる場合があります。

ブラウザが問題の原因かどうかを確認するには、別のブラウザ、別のデバイス、別のネットワークでウェブサイトを開いてみてください。正常に動作する場合は、元のブラウザのキャッシュとデータをクリアし、問題の原因となっているブラウザ拡張機能がないことを確認してください。

Nginx Web サイトに引き続きエラー 500 が表示される場合は、サーバー管理者に連絡して問題を解決してください。

サーバー側で Nginx エラー 500 を修正するにはどうすればいいですか?

このエラーは、単純な構文ミスやバックエンドアプリケーションの問題が原因である可能性があります。エラーだけでは根本的な原因が明らかにならないため、トラブルシューティングは困難になる可能性があります。しかし、ご安心ください。以下で説明する体系的なアプローチで問題を解決できます。

1. サーバーの過負荷を確認する

サーバーが過負荷状態の場合、重要なタスクに必要なリソースが不足し、内部エラー500が表示されることがあります。Free、Top、またはHTopコマンドを使用して、CPU使用率、メモリ使用量、ディスク空き容量を確認してください。以下のスクリーンショットは、topコマンド実行後の出力です。

サーバーリソースの検証

サーバーが過負荷になっている場合は、リソースを追加すると Nginx 500 エラーが解決されるはずです。

2. 作文の文法チェック

Nginx で 500 エラーが発生する最も一般的な原因は、構成構文エラーによるサーバー設定の誤りです。

これを修正するには、Nginx 構成ファイルを確認し、構文にエラーや間違ったディレクティブがないか注意深く確認します。

次に、Nginxの設定ファイルに構文エラーや不適切なディレクティブがないか確認します。`nginx -t` や `nginx -t -c /path/to/nginx.conf` などのコマンドを使用して構文を確認し、エラーを特定します。ターミナルで以下のコマンドを実行して、エラーを検出してください。

cd /etc/nginx/sites-available nginx -t

作文の構文をチェックする

以下も使用できます。

nginx -t -c /path/to/nginx.conf

構文エラーが検出された場合は、それを修正し、次の手順を実行して Nginx を再起動/リロードします。

sudo サービス nginx を再起動し、nginx -s をリロードします。

場合によっては、以下のように構成ファイルを変更する必要があります。

try_files と try_files $uri =404

أو

try_files $uri $uri/ /index.html; と try_files $uri/ $uri /index.php?$query_string;

3. サーバーログの確認

Nginx が 500 エラーを生成すると、内部エラーログにもエントリが作成されます。このログからエラーの根本原因を特定できます。サーバーログは通常、以下の場所に保存されます。

/var/log/nginx/エラー.log

Linux ディストリビューションでサーバー ログを開くには、次の手順を実行します。

cd /var/log/nginx cat error.log

表示されたページで、根本原因を示す指標を確認できます。例えば、下の画像をご覧ください。

サーバーログの確認

これは、SSL証明書の問題により、サーバーがクライアントとのSSL/TLS接続を確立できなかったことを示しています。ログで問題を特定したら、考えられる原因と解決策をオンラインで検索できます。

フォルダへの「アクセスが拒否されました」というエラーが発生し、レジストリを開けない場合は、Nginx.conf ファイルで「user www-data」を「user root」に置き換えてください。ファイルを保存した後、Nginx を再起動してレジストリを再度開いてみてください。

4. Cloudflareなどのサービスを一時的に無効にする

サーバー上で Cloudflare または同様のサービスを使用しており、正しく構成されていないか、最近の更新と競合している場合は、一時的に無効にすると、問題の診断に役立つことがあります。

  1. انن<XNUMXxDXNUMX><XNUMXxDXNUMX><XNUMXxDXNUMX><XNUMXxXNUMX>لل<XNUMXxDXNUMX><XNUMXxDXNUMX><XNUMXxDXNUMX><XNUMXxAXNUMX> Cloudflareコントロールパネル 資格情報を使用してログインします。
  2. انن<XNUMXxDXNUMX><XNUMXxDXNUMX><XNUMXxDXNUMX><XNUMXxXNUMX>لل<XNUMXxDXNUMX><XNUMXxDXNUMX><XNUMXxDXNUMX><XNUMXxAXNUMX> 概要 (概要)を展開 高機能 (詳細設定)。
  3. タップする ウェブサイトを一時停止 (サイトを一時停止)して確認します。ホスティングプロバイダーがCloudflareと連携している場合は、これも無効にしてください。
  4. サイトのIPアドレスが正しいことを確認し、Nginx 500内部サーバーエラーが解決されているかどうかを確認してください。サイトのHTTPバージョンとHTTPSバージョンの両方を確認してください。 ウェブサイトでCloudFlareを無効にする

5. サーバー証明書を確認する

現在の設定でいずれかの証明書の有効期限が切れているか無効になっている場合、内部サーバーでエラーが発生します。

  1. Nginx を使用するように設定 IP ドメイン名ではなく、Web サイト用です。 Nginx設定でサーバーのIPアドレスを使用する
  2. 無効にする SSL検証 proxy_pass に自己署名証明書を追加します。Cloudflareダッシュボード(SSL > クライアント証明書)で作成できます。
  3. サーバーが正常に動作しているかどうかを確認してください。正常に動作している場合は、証明機関に問い合わせるか、証明書の設定に誤りがないか確認してください。

6. バックエンドアプリケーションにエラーがないか確認する

Nginxがクライアントリクエストを別のサービスにリダイレクトし、そのサービスが正常に動作しない場合、500エラーが発生します。例えば、サーバーがクライアントリクエストをNode.jsなどのバックエンドアプリケーションにリダイレクトし、そのアプリケーションが正常に動作しない場合、前述のエラーが発生します。

サーバー ログにエラーが表示されない場合は、通常、バックエンドの問題を示していることに注意してください。

この問題を解決するには、バックエンドアプリケーションのログでエラーや例外がないか確認してください。例えばWordPressの場合、NodeJSのログは次のパスにあります。

/var/www/ .com/logs/error.log

7. ファイルの権限が不十分

Nginxサーバーにファイルへのアクセスまたは実行に必要な権限がない場合、500エラーが発生します。例えば、WordPressサイトでNginxサーバーがpublic_htmlフォルダ内のPHPファイルまたはHTMLファイルにアクセスできない、または提供できない場合、内部サーバーエラーが発生します。

これを修正するには、次のコマンドを使用して、サーバーがアクセスするファイルまたはディレクトリに対する必要なNginx権限を変更します。 chmod通常、ディレクトリの場合は 755、ファイルの場合は 644 です。

8. アドオンの互換性を確認する

プラグインはサーバーの機能強化に重要な役割を果たします。しかし、正しく機能しないプラグイン、古いプラグイン、あるいは過度にアップデートされたプラグインは、サーバー内部のエラーを引き起こす可能性があります。例えば、WordPressのアップデートは、多くのプラグインがアップデートしないと互換性がなくなるため、サイトの機能に支障をきたす可能性があります。

この問題を解決するには、各追加が 互換性がある サーバーソフトウェアとその他のアドオンについて。面倒に思えるかもしれませんが、努力する価値はあります。または、すべてのアドオンを無効にして、エラーが解決するかどうかを確認してください。

最近サーバーソフトウェアを更新した場合は、 戻る 可能であれば、以前のバージョンに戻してエラーが解決されているかどうかを確認してください。これにより、アップデートが問題の原因であったかどうかを確認できます。すべてのアドオンの互換性が確認されるまで、ソフトウェアのアップデートを延期することもできます。

9. 欠陥のあるスクリプトがないか確認する

プラグインと同様に、スクリプトはウェブサイトの特定の機能にとって不可欠です。破損したスクリプト、古いスクリプト、または互換性のないスクリプトは、内部サーバーエラーを引き起こす可能性があります。

この問題は次の方法で解決できます。 スクリプトを無効にする Nginxサーバーを確認してください。正常に動作している場合は、スクリプトを確認し、問題の原因となっているスクリプトを特定してください。

10. サーバーのタイムアウト値を増やす

サーバーのタイムアウト値がNginxの応答時間よりも短い場合、内部サーバーエラーが発生します。同様に、サーバーリクエストがNginxの応答時間よりも長い場合も、問題が発生します。

サーバーのタイムアウト値を増やすと問題は解決するはずです。具体的な手順はオンラインでご確認いただけます。

11. すべてのリダイレクト プロセスが動作していることを確認します。

Nginx がプロキシサーバーとして動作している場合、すべてのリダイレクトプロセスが正しく動作していることを確認してください。サーバーがクライアントからのリクエストをバックエンドサーバーにリダイレクトできない場合、500 エラーが発生します。

すべてのリダイレクトを一時的に無効にする 正常に動作していることを確認するには、各プロセスを個別に再起動し、問題のあるリダイレクトを特定します。問題が特定されたら、そのリダイレクトの失敗の原因と解決策をオンラインで検索してください。

12. PHPをNginxで使用する

Nginx は PHP をネイティブにサポートしていないため、Nginx での PHP 構成が正しくないと、内部サーバー エラーが発生する可能性があります。

この問題を解決するには、PHPとNginxの統合を確認してください。PHPエラー表示が無効になっている場合、PHPで問題が発生するとサーバーはNginx 500エラーを返します。PHPエラー表示を有効にすると、トラブルシューティングが容易になります。

CentOS 7 では、次の操作を行います。

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

代わりに、に行きます

に/etc/php.ini

そして変更

display_errors = オフ

私に

display_errors = オン

より優れた PHP プロセッサ (PHP-FPM など) を探して、Nginx キャッシュを有効にすることもできます。

13. ミニマリストのアプローチを採用する。

それでもエラー 500 をクリアできない場合は、最小限のアプローチを使用して問題を解決できます。

  1. 作成した バックアップ サイトから、サイトのコンテンツをプレーンテキストを含む単純な index.html ファイルに置き換えます。
  2. サイトを確認する 作品 指示、機能、サービス、プラグイン、スクリプトなどを 1 つずつ追加し始めます。
  3. 各ステップの後に必ずサイトをテストし、問題が再発するかどうかを確認してください。
  4. コンテンツをサイトに戻して、コンテンツが問題の原因であるかどうかを確認します。
  5. 問題の原因となっている要素を見つけたら、インターネットで検索して修正できます。

今後Nginx 500サーバーエラーを繰り返さないようにする方法

Nginx 500 エラーの再発を回避するには、次の手順を実行できます。

  • 定期的なサーバーメンテナンスを実行します。
  • サイトのコードとコンテンツ (画像、動画など) が設定に合わせて最適化されていることを確認してください。
  • コンテンツ配信ネットワーク (CDN) を作成し、キャッシュを通じてサイトを提供します。

ご質問がございましたら、コメント欄にご記入ください。

コメントは締め切りました。