當我在我的網站做維護和重新啓動服務器,有時NGINX返回502錯誤網關錯誤。同樣的事情有時在重負載下發生。這讓我的訪問者感到困惑,他們沒有意識到問題可能是暫時的。有什麼方法可以讓訪問者在網站返回時自動刷新頁面?自動刷新頁面上502錯誤網關錯誤
2
A
回答
1
您可以通過使用Javascript來檢查當前頁面的HTTP狀態碼並在服務器備份時刷新頁面(即返回200 OK
狀態碼)。當許多用戶一次遇到502
錯誤頁面時,爲避免錘擊服務器,我建議使用truncated binary exponential backoff算法。這意味着試之間的時間每次最多加倍,直到預設的最大值,從而降低您的服務器上的整體負載。
下面的代碼通過AJAX檢查當前頁面的HTTP狀態,直到它返回200 OK
,在這種情況下,它將刷新頁面以獲取實時版本。如果遇到502
,它將嘗試重試,從8秒間隔開始,然後是16,32,...,4096秒,然後以4096秒間隔(約68分鐘)無限制地重試。如果遇到除502
或200
以外的任何代碼,則重試過程將自動中止(儘管如果需要,可以使用更多case
語句來更改)。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Currently unavailable</title>
</head>
<body>
<h1>Site currently unavailable (code 502)</h1>
<p>This page will refresh when the site is back.</p>
<noscript>Your browser doesn’t support javascript. Please try refreshing the page manually every few minutes.</noscript>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
/* Set starting and maximum retry times in seconds */
var retry_current = 8, // first refresh at 8 seconds
retry_max = 4096, // refresh time truncated at about 68 minutes
check_response = function() {
$.ajax(
{
url: window.location.href,
type: "HEAD",
complete: function (jqXHR) {
switch (jqXHR.status) {
case 200:
window.location.reload(true);
break;
case 502:
if(retry_current < retry_max) {
retry_current *= 2;
}
setTimeout(check_response, retry_current * 1000);
}
}
});
};
setTimeout(check_response, retry_current * 1000);
</script>
</body>
</html>
如果您使用nginx的,你可以添加以下到您的配置文件中使用的頁面:
error_page 502 /502.html;
location = /502.html {
alias /path/to/502.html;
}
相關問題
- 1. 錯誤的網關502等待~2min後頁面加載錯誤
- 2. nginx 502錯誤的網關錯誤
- 3. HHVM 「崩潰」 502錯誤網關錯誤
- 4. 502 Azure網站上的錯誤網關錯誤
- 5. AWS API網關中的錯誤:502錯誤的網關
- 6. AWS API網關錯誤響應生成502「錯誤的網關」
- 7. Rails,Nginx和PostgreSQL - 502網關錯誤
- 8. Nginx + PHP-FPM 502錯誤的網關
- 9. 502錯誤的網關WCF不響應
- 10. 502錯誤的網關Nginx/1.4.6 Ubuntu
- 11. Apache + Mod_wsgi返回502錯誤的網關!
- 12. 502錯誤網關 - jQuery/AJAX表格
- 13. 應用程序網關 - 502錯誤
- 14. Azure Webapp - 接收502頁面錯誤
- 15. HTTP錯誤502:錯誤的網關推時到位桶
- 16. Nginx和PHP-FPM 502錯誤的網關錯誤
- 17. 調試502錯誤的網關錯誤 - Ubuntu,Nginx,Unicorn
- 18. Drupal + Nginx + Php-cgi:502錯誤的網關錯誤
- 19. OneNote REST API - 如何處理「502錯誤網關」錯誤?
- 20. 錯誤502使用CodeIgnitor時出現錯誤的網關
- 21. 錯誤:SAP Webide中的502錯誤網關多雲版本
- 22. 突然得到一個502錯誤的網關錯誤
- 23. Nginx 502錯誤的網關錯誤只在Firefox
- 24. 錯誤502(錯誤網關)與HttpWebRequest的通過SSL
- 25. nginx的Laravel 4 - 502錯誤網關錯誤
- 26. ajax刷新部分頁面錯誤
- 27. Azure網站錯誤502
- 28. 訪問Web服務時出現錯誤502錯誤網關錯誤
- 29. 502錯誤的網關錯誤,當試圖上傳文件到Wordpress
- 30. 錯誤502 Ngrok上的錯誤網關,當我嘗試連接到alexa時