Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自动刷新502上的页面错误网关错误_Javascript_Http_Nginx - Fatal编程技术网

Javascript 自动刷新502上的页面错误网关错误

Javascript 自动刷新502上的页面错误网关错误,javascript,http,nginx,Javascript,Http,Nginx,当我在站点上进行维护并重新启动服务器时,有时NGINX会返回502坏网关错误。同样的事情有时在重载下发生。这让我的访问者感到困惑,他们没有意识到这个问题可能是暂时的。有什么方法可以让访问者在站点返回时自动刷新页面吗?您可以使用Javascript检查当前页面的HTTP状态代码,并在服务器备份时刷新页面(即返回200 OK状态代码)。为了避免在许多用户同时遇到502错误页面时对服务器造成冲击,我建议使用该算法。这意味着每次重试之间的时间会加倍,直到达到预设的最大值,从而降低服务器上的总体负载 下面

当我在站点上进行维护并重新启动服务器时,有时NGINX会返回502坏网关错误。同样的事情有时在重载下发生。这让我的访问者感到困惑,他们没有意识到这个问题可能是暂时的。有什么方法可以让访问者在站点返回时自动刷新页面吗?

您可以使用Javascript检查当前页面的HTTP状态代码,并在服务器备份时刷新页面(即返回
200 OK
状态代码)。为了避免在许多用户同时遇到
502
错误页面时对服务器造成冲击,我建议使用该算法。这意味着每次重试之间的时间会加倍,直到达到预设的最大值,从而降低服务器上的总体负载

下面的代码通过AJAX检查当前页面HTTP状态,直到返回
200OK
,在这种情况下,它将刷新页面以获得实时版本。如果遇到
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>
error_page 502 /502.html;
location = /502.html {
  alias /path/to/502.html;
}