解決客戶端和伺服器端的 NGINX 內部伺服器錯誤 500
Nginx(發音為 Engine-XWeb 伺服器(例如 Web Server)於 2004 年 10 月公開發布,它還具備負載平衡器、反向代理和 HTTP 快取等功能。微軟、Google、Facebook、Twitter 和蘋果等知名科技公司都採用了 Web Server,這足以證明其受歡迎程度和實用性。
Nginx 中 500 內部伺服器錯誤的意義
與其他軟體應用程式或伺服器一樣,Nginx 也會遇到錯誤,其內建的錯誤報告系統可以識別這些錯誤。然而,500 內部伺服器錯誤是一種特殊情況。這種錯誤也會出現在其他一些 Web 伺服器上,例如 Apache 和 IIS。
錯誤 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 或類似服務,但設定不正確或與最近的更新衝突,暫時停用該服務有助於診斷問題。
- 去 Cloudflare 控制面板 使用您的憑據登錄。
- 去 Overview (概述)和展開 進階功能 (進階設定).
- 輕按 暫停網站 (暫停網站)並確認。如果您的主機提供者整合了 Cloudflare,請務必將其停用。
- 請確保網站 IP 位址正確,並檢查 Nginx 500 內部伺服器錯誤是否已解決。請務必同時檢查網站的 HTTP 和 HTTPS 版本。
5. 驗證伺服器憑證
如果您的任何憑證已過期或在您目前的設定中失效,這肯定會導致內部伺服器發生錯誤。
- 設定 Nginx 以使用 知識產權 指的是您的網站,而不是網域名稱。
- 停用 SSL驗證 在 proxy_pass 中新增自簽章憑證。您可以在 Cloudflare 控制台(SSL > 用戶端憑證)中建立一個。
- 檢查伺服器是否運作正常。如果運作正常,請聯絡憑證授權單位或檢查您的設置,是否有任何錯誤的憑證配置。
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,您可以採用極簡方法來解決問題。
- 創建 備份 從您的網站中,將網站內容替換為包含一些純文字的簡單 index.html 檔案。
- 檢查網站是否已關閉 作品 開始逐一新增路線、功能、服務、插件、腳本等。
- 每完成一個步驟後,請務必測試網站,看看問題是否會再次出現。
- 將內容恢復到您的網站,並檢查該內容是否是問題的原因。
- 一旦找到導致問題的因素,就可以透過上網搜尋來解決它。
如何避免將來再次出現 Nginx 500 伺服器錯誤
您可以採取以下步驟來避免再次出現 Nginx 500 錯誤:
- 定期進行伺服器維護。
- 請確保網站的程式碼和內容(圖片、影片等)已針對您的設定進行最佳化。
- 建立內容分發網路 (CDN),透過其快取來提供網站服務。
如有任何疑問,請在評論區留言。
評論被關閉。