Wenn ich Wartungsarbeiten an meiner Site durchführe und den Server neu starte, gibt NGINX manchmal einen 502 Bad Gateway-Fehler zurück. Das Gleiche passiert manchmal unter schwerer Belastung. Das ist verwirrend für meine Besucher, die nicht wissen, dass das Problem wahrscheinlich nur vorübergehend ist. Gibt es eine Möglichkeit, dass Besucher die Seite automatisch aktualisieren können, wenn die Website wieder verfügbar ist?Seite automatisch aktualisieren bei 502 Bad Gateway-Fehler
Antwort
Sie können dies erreichen, indem Sie Javascript verwenden, um den HTTP-Statuscode für die aktuelle Seite zu überprüfen, und die Seite aktualisieren, wenn der Server wieder aktiv ist (z. B. den Statuscode). Um zu vermeiden, den Server zu hämmern, wenn viele Benutzer die 502
Fehlerseite gleichzeitig erfahren, würde ich den Algorithmus truncated binary exponential backoff empfehlen. Dies bedeutet, dass sich die Zeit zwischen den Wiederholungen jedes Mal bis zu einem voreingestellten Maximum verdoppelt, was die Gesamtbelastung Ihres Servers verringert.
Der folgende Code prüft den HTTP-Status der aktuellen Seite über AJAX, bis er 200 OK
zurückgibt. In diesem Fall wird die Seite aktualisiert, um die Live-Version zu erhalten. Es wird versuchen, es erneut zu versuchen, wenn eine 502
auftritt, beginnend mit einem Intervall von 8 Sekunden, dann 16, 32, ..., 4096 Sekunden, dann mit unbegrenzten nachfolgenden Wiederholungen in Intervallen von 4096 Sekunden (etwa 68 Minuten). Wenn ein anderer Code als 502
oder 200
auftritt, wird der Wiederholungsversuch automatisch abgebrochen (obwohl Sie dies bei Bedarf mit weiteren case
Anweisungen ändern könnten).
<!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>
Wenn Sie nginx verwenden, können Sie die folgende in der Konfigurationsdatei hinzufügen können, um die Seite zu verwenden:
error_page 502 /502.html;
location = /502.html {
alias /path/to/502.html;
}
- 1. Drupal + Nginx + Php-cgi: 502 Falscher Gatewayfehler
- 2. Cloudflare Bad Gateway 502 Fehler
- 3. "502 Bad Gateway" mit Beifahrer
- 4. Laravel 502 Bad Gateway Fehler
- 5. Ngrok Bad Gateway Intermittierend 502
- 6. GCM Push-Benachrichtigungen verursachen 502 Bad Gateway
- 7. relativ einfache preg_match_all verursacht 502 Bad Gateway
- 8. Django Nginx uwsgi 502 Bad Gateway immer
- 9. 502 Bad Gateway - Aufruf Scoring api Endpunkt
- 10. nginx flask aws 502 Bad Gateway
- 11. Paypal Sandbox IPN Simulator - 502 Bad Gateway
- 12. Nginx - manchmal wirft 502 Bad Gateway
- 13. 502 Bad Gateway beim Umleiten auf Nginx
- 14. Fehler 502 Bad Gateway Nginx und Sellerie Arbeiter
- 15. Passport.js express google oauth 502 Bad Gateway auf nginx
- 16. 502 Bad Gateway - Meteor und nginx auf Ubuntu 16.04.2 LTS
- 17. 502 Bad Gateway auf Reverseproxy nodejs mit Nginx mit https
- 18. 502 Bad Gateway Fehler für Laravel Website läuft auf Nginx
- 19. Bad Gateway 502 Fehler nach Warten ~ 2min für die Seite zu laden
- 20. automatisch aktualisieren Anzeigetafel ohne Refresh-Seite
- 21. deaktivieren Seite aktualisieren bei Fokus verlieren
- 22. Nginx überschreiben allgemeinen symfony Fehler mit 502 Bad Gateway
- 23. Funktion in PHP Skript verursacht einen 502 Bad Gateway Fehler
- 24. Homestead 502 Bad Gateway anstelle von Whoops für PHP Fehler
- 25. Fehler in AWS API-Gateway: 502 Bad Gateway
- 26. socket.io Schaffung 502 Bad Gateway on connect/websocket ungültig
- 27. node.js app mit nginx 502 bad gateway error
- 28. AWS API Gateway-Fehlerantwort generiert 502 "Bad Gateway"
- 29. 502 Bad Gateway nach mehrfacher Anfrage auf Google Compute Engine
- 30. 502 Bad Gateway nginx/1.9.11 + Gehöft + Landstreicher + Laravel 5.2