如何修復 502 Bad Gateway NGINX 錯誤? (7 種方法)

已發表: 2023-04-20

Nginx 是一個著名的開源 Web 服務器,因其性能、可擴展性和靈活性而廣受歡迎。 但是,與其他 Web 服務器類似,Nginx 可能會遇到阻礙其向客戶端交付內容的能力的錯誤。 其中一個錯誤是 502 Bad Gateway Nginx 錯誤。

遇到錯誤可能會非常令人沮喪和困惑,尤其是在您技術不精通的情況下。 你可能會遇到幾個類似的突出錯誤,比如白屏死機,建立數據庫連接錯誤。 但是 502 bad gateway nginx 錯誤是一個非常流行的錯誤。

發生此錯誤可能有多種可能的原因,因此有多種解決方法。 在這篇文章中,我們將告訴您 502 bad gateway Nginx 的真正含義、可能的原因以及您必須遵循的最佳故障排除方法。

讓我們開始吧!


目錄
什麼是 502 Bad Gateway Nginx 錯誤?
是什麼導致 502 Bad Gateway Nginx 錯誤?
如何修復 502 Bad Gateway Nginx?
概括
經常問的問題

閱讀:修復網站上 502 錯誤網關錯誤的 15 種方法


什麼是 502 Bad Gateway Nginx 錯誤?

502 Bad Gateway Nginx 錯誤是一個 HTTP 狀態代碼,表示充當網關或代理服務器的服務器無法從上游服務器接收有效響應。 對於 Nginx,當服務器無法與上游服務器建立連接或上游服務器返回無效響應時,會出現 502 bad gateway 錯誤。

當嘗試訪問在反向代理或負載平衡器後面託管的網站或 Web 應用程序時,通常會出現此錯誤。

您可能會在不同的站點上找到 502 Bad gateway Nginx Error 的多種變體。 例如:

  • HTTP 錯誤 502 - 網關錯誤
  • 502 代理錯誤
  • 502錯誤的網關
  • 502 服務暫時超載
  • HTTP 502
  • 502 錯誤網關 NGINX
  • 錯誤 502

是什麼導致 502 Bad Gateway Nginx 錯誤?

Nginx 中出現 502 Bad Gateway 錯誤的原因可能有多種,但下面列出了一些最常見的原因:

服務器過載

當後端服務器收到太多請求時,它可能會超載並且無法在超時期限內響應。 這會導致 502 錯誤,因為上游服務器無法滿足客戶端的請求。 適當的服務器規模調整、資源分配、負載平衡和擴展策略可以防止服務器過載。

連接問題

  • 當反向代理服務器和後端服務器之間的網絡連接出現問題時,連接問題會導致 Nginx 出現 502 Bad Gateway 錯誤。
  • 這可能是由於網絡擁塞、網絡設置配置錯誤或硬件故障造成的。
  • 當反向代理服務器嘗試向後端服務器轉發請求但無法建立連接時,它會向客戶端返回 502 錯誤。
  • 出現該錯誤是因為反向代理服務器充當客戶端和後端服務器之間的中介,無法連接到後端服務器來完成客戶端的請求。
  • 排除網絡設​​置故障、檢查防火牆規則和監控網絡流量有助於解決問題。

DNS 問題

  • 當後端服務器的 DNS 解析失敗時,DNS 問題會導致 Nginx 出現 502 Bad Gateway 錯誤。
  • 發生這種情況的原因可能是 DNS 配置不正確、DNS 服務器故障或 DNS 緩存問題。
  • 當客戶端向反向代理服務器發送請求時,反向代理服務器需要將後端服務器的域名解析為IP地址。
  • 如果DNS解析失敗,反向代理服務器無法將請求轉發給後端服務器,導致返回給客戶端502錯誤。

閱讀:什麼是 DNS?


防火牆限制

  • 當防火牆阻止反向代理服務器和後端服務器之間的連接時,防火牆限制會導致 Nginx 出現 502 Bad Gateway 錯誤。
  • 當防火牆配置為限制進出特定 IP 地址或端口的流量時,可能會發生這種情況。
  • 當反向代理服務器嘗試連接到後端服務器,但防火牆阻止連接時,它會向客戶端返回 502 錯誤。
  • 出現這種情況是因為反向代理服務器充當了客戶端和後端服務器之間的中介,無法與後端服務器建立連接來完成客戶端的請求。
  • 要修復導致 502 錯誤的防火牆相關問題,您可能需要調整防火牆規則以允許流量在反向代理和後端服務器之間流動。

軟件錯誤

  • 由於反向代理服務器或後端服務器中的軟件錯誤或配置錯誤,可能會出現 502 Bad Gateway 錯誤。
  • 由於服務器模塊或應用程序的編碼錯誤或配置錯誤,可能會發生此錯誤。
  • 如果任一服務器的軟件或配置存在錯誤,則可能無法在超時時間內處理請求或響應,從而導致向客戶端返回 502 錯誤。
  • 要修復導致 502 錯誤的軟件相關問題,您可能需要檢查反向代理和後端服務器的日誌以識別任何錯誤或警告消息。

PHP-FMP 響應時間太長

  • PHP-FPM(FastCGI Process Manager)在超時時間內未能響應或遇到嚴重錯誤時,會導致 Nginx 出現 502 Bad Gateway 錯誤。
  • 由於資源不足、配置錯誤或 PHP 代碼中的錯誤,可能會發生此錯誤。
  • PHP-FPM 是在 Nginx 中運行 PHP 應用程序的一種流行方式,其中 Nginx 將請求發送到 PHP-FPM,它處理 PHP 代碼並將結果返回給 Nginx,然後 Nginx 將響應發送回客戶端。
  • 要修復與 PHP-FPM 相關的問題,您可能需要調整 PHP-FPM 配置以增加進程或線程的數量或調整超時設置。
  • 您可能還需要檢查 PHP 代碼以識別和修復任何錯誤或性能問題。
  • 此外,監視服務器日誌和系統資源可以幫助識別任何可能表明 PHP-FPM 存在更大問題的模式或趨勢。

閱讀:如何修復 HTTP 504 網關超時錯誤?


如何修復 502 Bad Gateway Nginx?

以下是您可以用來修復 502 Bad Gateway Nginx 錯誤的一些最佳解決方案:

  • 檢查 Nginx 的狀態
  • 檢查後端服務器狀態
  • 檢查 DNS 配置
  • 檢查防火牆配置
  • 增加緩衝區大小
  • 重啟 Nginx 服務器
  • 檢查 PHP-FPM 狀態

檢查 Nginx 的狀態

您需要做的第一件事是檢查 Nginx 是否正在運行並響應請求。 為此,請運行下面給出的以下命令:

如果 Nginx 正在運行,您將收到類似這樣的輸出消息,

nginx.service - The nginx HTTP Server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-10-11 10:25:41 UTC; 1 days ago
Docs: https://httpd.nginx.org/docs/2.4/

如果 Nginx 沒有運行,你會得到類似這樣的輸出消息,

nginx.service - The nginx HTTP Server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Fri 2022-10-11 10:25:41 UTC; 25s ago
Docs: https://httpd.nginx.org/docs/2.4/

現在,如果 Nginx 沒有運行,您必須使用以下命令重新啟動它,

systemctl start nginx

檢查後端服務器狀態

  • 登錄到託管 Nginx 的反向代理服務器。
  • 打開終端窗口並運行以下命令:

curl -I http://backend-server-ip-address/

• 將“backend-server-ip-address”替換為您的後端服務器的IP 地址。

• 檢查命令輸出中的HTTP 狀態代碼。 如果後端服務器運行正常,您應該會看到狀態代碼 200 OK。

• 如果您收到的狀態代碼不是200,則表示後端服務器可能有問題。 您可以通過檢查後端服務器的日誌以識別任何錯誤或警告消息來進一步調查問題。

檢查 DNS 配置

如果DNS解析失敗,則反向代理服務器無法將請求轉發給後端服務器,從而導致向客戶端返回502 Bad Gateway錯誤。 因此,驗證後端服務器的 DNS 配置是否正確非常重要。

要檢查 DNS 配置,您可以執行以下步驟:

  • 登錄到託管 Nginx 的反向代理服務器。
  • 打開終端窗口並運行以下命令:

nslookup backend-server-domain-name

將“backend-server-domain-name”替換為您的後端服務器的域名。

• 檢查命令的輸出以驗證是否為後端服務器返回了正確的IP 地址。

  • 如果命令的輸出顯示DNS解析失敗,則可能是DNS配置有問題。 您可以通過檢查後端服務器域名的 DNS 設置或聯繫您的 DNS 提供商尋求幫助來進一步調查問題。

檢查防火牆配置

建議檢查防火牆日誌是否有異常塊。 有時防火牆還會阻止或阻止站點。 要解決此問題,您需要暫時禁用防火牆並檢查問題是否仍然存在或已解決。

增加緩衝區大小

增加緩衝區大小允許 Nginx 存儲更多來自服務器響應的數據,確保響應完整且無錯誤。 要增加緩衝區大小,您需要編輯 Nginx 配置文件並添加以下指令。

  • proxy_buffer_size :設置每個緩衝區的大小。 默認值通常為 4K。 您可以根據服務器的要求將其增加到更高的值。 例如,要將緩衝區大小設置為 16K,請將以下行添加到您的配置文件中:

proxy_buffer_size 16k;

  • proxy_buffers :設置要分配的緩衝區數。 默認值通常為 8。您可以根據服務器的要求將其增加到更高的值。 例如,要將緩衝區數設置為 32,將緩衝區大小設置為 16K,請將以下行添加到您的配置文件中:

proxy_buffers 32 16k;


注意:請務必注意,增加緩衝區大小和緩衝區數量會增加服務器上的內存使用量。 因此,您應該嘗試不同的緩衝區大小和緩衝區數量,以找到適合您的服務器和應用程序的最佳設置。


  • 對 Nginx 配置文件進行更改後,保存文件並重新啟動 Nginx 以使更改生效。 您可以通過運行以下命令來執行此操作:

sudo service nginx restart

重啟 Nginx 服務器

在某些情況下,只需重新啟動 Nginx 服務器即可解決 502 bad gateway Nginx 錯誤。 去做這個,

您需要在終端或 shell 中運行命令。 確切的命令取決於您使用的操作系統和發行版,但這裡有幾個示例:

  • Ubuntu 和 Debian:

sudo service nginx restart

  • CentOS、Fedora 和 RHEL:

sudo systemctl restart nginx

  • 蘋果電腦

sudo nginx -s reload

這些命令將優雅地重啟 Nginx 服務器,這意味著它將等待所有活動連接完成,然後再關閉並重新啟動。

檢查 PHP-FPM 狀態

有時,502 Bad Gateway Nginx 錯誤也可能由未運行的 PHP-FPM 觸發。 因此,需要檢查PHP-FPM的狀態,確保其正常運行。

要檢查運行狀態,可以使用以下命令,

sudo service php-fpm status

如果 PHP-FPM 正在運行,您應該會看到一條消息表明它處於活動狀態。

但是,如果 PHP-FPM 沒有運行,您可以嘗試使用以下命令重新啟動它:

sudo service php-fpm restart

此命令將重新啟動 PHP-FPM 服務,這有助於解決可能觸發 502 錯誤網關 Nginx 錯誤的任何問題。


概括

502 Bad Gateway Nginx 錯誤是 Nginx 用戶可能遇到的常見錯誤。 它通常是由連接問題、服務器過載、DNS 問題、防火牆限製或軟件錯誤引起的。

但是,按照本文概述的步驟,您可以排除故障並解決 502 bad gateway nginx 錯誤。

不幸的是,如果上述方法都不適合您,請考慮從 Nginx 論壇或經驗豐富且合格的 Nginx 顧問尋求幫助。

如果您對這篇文章中我們可能遺漏的 502 Bad Gateway Nginx 錯誤有任何提示或建議,或者如果您想分享您的經驗,請在下面的評論部分告訴我們。 我們歡迎您的意見。


閱讀:如何修復 WordPress 中的 HTTP 500 內部服務器錯誤?


經常問的問題

如何修復 502 Bad gateway nginx?

您可以通過以下方法修復 502 Bad Gateway nginx 錯誤:
1.查看Nginx的狀態
2.查看後端服務器狀態
3.檢查DNS配置
4.檢查防火牆配置
5.增加緩衝區大小
6.重啟Nginx服務器
7.檢查 PHP-FPM 統計

我如何檢查我的 nginx 狀態?

要檢查 nginx 狀態,請運行下面給出的以下命令:
systemctl狀態nginx
輸出將顯示 nginx 是否正在運行。

什麼是 502 Bad gateway 錯誤?

502 Bad Gateway Nginx 錯誤是一個 HTTP 狀態代碼,表示充當網關或代理服務器的服務器無法從上游服務器接收有效響應。