AngularJS-处理NGINX返回的502/503错误

AngularJS-处理NGINX返回的502/503错误,angularjs,nginx,angular-http-interceptors,http-error,Angularjs,Nginx,Angular Http Interceptors,Http Error,我在AngularJSV1.4中使用http拦截器来捕获400402403500502503个错误。我能够处理从后端服务器返回的4xx和500错误,但当我们无法到达后端服务器(例如502/503)时,该怎么办?我正在使用nginx为我的angular应用程序提供服务,这是返回502/503的地方吗?如果是这样,angular还能从nginx截获这些错误吗?我在我的拦截器中定义了502/503,但是如果我创建了一个从nginx返回502的位置,我的拦截器就不会捕获它 nginx location

我在AngularJSV1.4中使用http拦截器来捕获400402403500502503个错误。我能够处理从后端服务器返回的4xx和500错误,但当我们无法到达后端服务器(例如502/503)时,该怎么办?我正在使用nginx为我的angular应用程序提供服务,这是返回502/503的地方吗?如果是这样,angular还能从nginx截获这些错误吗?我在我的拦截器中定义了502/503,但是如果我创建了一个从nginx返回502的位置,我的拦截器就不会捕获它

nginx

location ~/502 {
    default_type text/html;
    return 502;
}
拦截器

  function responseErrorFactory(storageFactory, $q, $injector, $log) {

    /* jshint validthis: true */
    var vm = this;
    var opened = false;
    return {
      responseError: responseError
    };

    function responseError(response) {
      var stateService = $injector.get('$state');
      var modalService = $injector.get('$uibModal');
      var translateService = $injector.get('$translate');
      var serverErrors = [500,502,503,504];
      var clientErrors = [400,403,404];
      var title;
      var message;
      var code = null;
      if ((serverErrors.indexOf(response.status) != -1) || (clientErrors.indexOf(response.status) != -1) || (response.status === -1)) {
        if(!opened) {
          if(clientErrors.indexOf(response.status) != -1) {
            code = response.data.code ? response.data.code : response.status;
            var titlePromise = translateService('locales.catch_all_errors.server.title', {CODE: code});
            var messagePromise = translateService('locales.catch_all_errors.server.message');
            message = translateService('locales.backend_error.' + code);
          }
          if(serverErrors.indexOf(response.status) != -1) {
            code = response.data.code ? response.data.code : response.status;
            var titlePromise = translateService('locales.catch_all_errors.server.title', {CODE: code});
            var messagePromise = translateService('locales.catch_all_errors.server.message');
          }
          if(response.status === -1) {
            var titlePromise = translateService('locales.catch_all_errors.response.title');
            var messagePromise = translateService('locales.catch_all_errors.response.message');
          }
          $q.all([titlePromise, messagePromise]).then(function(data) {
            title = data[0];
            message = message ? message : data[1];
            vm.modalInstance = modalService.open({
              templateUrl: 'components/modal/error.html',
              controller: 'errorController',
              controllerAs: 'mvm',
              size: 'md',
              resolve: {
                title: function() {
                  return title;
                },
                message: function() {
                  return message;
                },
                code: function() {
                  return code;
                }
              }
            });
            opened = true;
            vm.modalInstance.result.then(function(resultCallBack) {
              opened = false;
              if(resultCallBack) {
                resultCallBack();
              }
            });
          });
        }
      } else {
        return $q.reject(response);
      }
    }
  }