解決客戶端和伺服器端的 NGINX 內部伺服器錯誤 500

Nginx(發音為 Engine-XWeb 伺服器(例如 Web Server)於 2004 年 10 月公開發布,它還具備負載平衡器、反向代理和 HTTP 快取等功能。微軟、Google、Facebook、Twitter 和蘋果等知名科技公司都採用了 Web Server,這足以證明其受歡迎程度和實用性。

Nginx的

Nginx 中 500 內部伺服器錯誤的意義

與其他軟體應用程式或伺服器一樣,Nginx 也會遇到錯誤,其內建的錯誤報告系統可以識別這些錯誤。然而,500 內部伺服器錯誤是一種特殊情況。這種錯誤也會出現在其他一些 Web 伺服器上,例如 Apache 和 IIS。

Nginx 內部伺服器錯誤 500

錯誤 500 是一個 HTTP 狀態碼,表示伺服器出現問題,但無法明確確定根本原因。與其他 HTTP 狀態碼(例如 403(禁止存取)或 404(未找到))不同,它不提供任何關於可能原因的線索。

如何從客戶端修復 Nginx 中的 500 錯誤?

此錯誤代碼表示伺服器端存在問題,通常可以在伺服器端自行解決。但是,在極少數情況下,您的瀏覽器可能會因為建立了伺服器無法處理的請求而導致問題。

若要檢查是否是瀏覽器導致的問題,請嘗試在其他瀏覽器、其他裝置以及其他網路上開啟網站。如果一切正常,請清除原始瀏覽器的快取/數據,並確保沒有瀏覽器擴充功能導致問題。

如果 Nginx 網站仍然顯示錯誤 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 service nginx restart nginx -s reload

在某些情況下,您可能需要修改設定文件,如下所示:

try_files with try_files $uri =404

أو

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

3. 檢查伺服器日誌

當 Nginx 出現 500 錯誤時,它也會在內部錯誤日誌中建立一個條目,該條目可以指示錯誤的根本原因。伺服器日誌通常位於:

/var/log/nginx/error.log

在 Linux 發行版上,執行下列操作以開啟伺服器日誌:

cd /var/log/nginx cat error.log

在結果頁面上,您可以查看所有與根本原因相關的指標。例如,請參見下圖:

檢查伺服器日誌

這表示伺服器由於 SSL 憑證問題而無法與客戶端建立 SSL/TLS 連線。在日誌中找到問題後,您可以在線搜尋可能的原因和解決方案。

如果因為資料夾權限不足而無法開啟註冊表,請修改 Nginx.conf 文件,將「user www-data」替換為「user root」。儲存檔案後,重新啟動 Nginx 服務,然後再次嘗試開啟註冊表。

4. 暫時停用 Cloudflare 或類似服務

如果您在伺服器上使用 Cloudflare 或類似服務,但設定不正確或與最近的更新衝突,暫時停用該服務有助於診斷問題。

  1. Cloudflare 控制面板 使用您的憑據登錄。
  2. Overview (概述)和展開 進階功能 (進階設定).
  3. 輕按 暫停網站 (暫停網站)並確認。如果您的主機提供者整合了 Cloudflare,請務必將其停用。
  4. 請確保網站 IP 位址正確,並檢查 Nginx 500 內部伺服器錯誤是否已解決。請務必同時檢查網站的 HTTP 和 HTTPS 版本。 禁用網站上的 CloudFlare

5. 驗證伺服器憑證

如果您的任何憑證已過期或在您目前的設定中失效,這肯定會導致內部伺服器發生錯誤。

  1. 設定 Nginx 以使用 知識產權 指的是您的網站,而不是網域名稱。 在 Nginx 設定中使用伺服器的 IP 位址
  2. 停用 SSL驗證 在 proxy_pass 中新增自簽章憑證。您可以在 Cloudflare 控制台(SSL > 用戶端憑證)中建立一個。
  3. 檢查伺服器是否運作正常。如果運作正常,請聯絡憑證授權單位或檢查您的設置,是否有任何錯誤的憑證配置。

6. 檢查後端應用程式是否有任何錯誤

如果 Nginx 將用戶端請求重新導向到另一個無法正確執行的服務,則會導致 500 錯誤。例如,如果伺服器將用戶端請求重定向到後端應用程式(例如 NodeJS),而該應用程式無法正常運行,則會導致上述錯誤。

請記住,如果伺服器日誌中沒有顯示任何錯誤,這通常表示後端有問題。

若要解決此問題,請檢查後端應用程式日誌中是否有任何錯誤或異常。例如,在 WordPress 中,您可以在下列路徑找到 NodeJS 日誌:

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

7. 文件權限不足

如果 Nginx 伺服器缺少存取或執行檔案所需的權限,則會導致 500 錯誤。例如,如果 Nginx 伺服器無法存取或提供 public_html 資料夾中的 PHP 或 HTML 文件,WordPress 網站就會出現內部伺服器錯誤。

若要解決此問題,您可以使用下列命令修改伺服器存取的檔案或目錄的必要 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中

並改變

顯示錯誤 = 關閉

إ

顯示錯誤 = 開啟

您也可以尋找更好的 PHP 處理器(例如 PHP-FPM)並啟用 Nginx 快取。

13. 採用極簡主義方法。

如果仍然無法清除錯誤 500,您可以採用極簡方法來解決問題。

  1. 創建 備份 從您的網站中,將網站內容替換為包含一些純文字的簡單 index.html 檔案。
  2. 檢查網站是否已關閉 作品 開始逐一新增路線、功能、服務、插件、腳本等。
  3. 每完成一個步驟後,請務必測試網站,看看問題是否會再次出現。
  4. 將內容恢復到您的網站,並檢查該內容是否是問題的原因。
  5. 一旦找到導致問題的因素,就可以透過上網搜尋來解決它。

如何避免將來再次出現 Nginx 500 伺服器錯誤

您可以採取以下步驟來避免再次出現 Nginx 500 錯誤:

  • 定期進行伺服器維護。
  • 請確保網站的程式碼和內容(圖片、影片等)已針對您的設定進行最佳化。
  • 建立內容分發網路 (CDN),透過其快取來提供網站服務。

如有任何疑問,請在評論區留言。

評論被關閉。