NGINX генерирует HTTP 502 вместо 504, когда прокси-сервер (Spring Boot) не работает (отсутствует в ОС) - PullRequest
0 голосов
/ 04 декабря 2018

Я использую NGINX в качестве прокси-сервера HTTP для моего приложения Spring Boot.Я хотел бы обработать некоторый сценарий сбоя, например, когда Spring Boot недоступен (процесс полностью мертв).Я пытаюсь перехватить определенные ошибки HTTP с помощью директивы error_page для выполнения дополнительных задач, написанных на LUA, соответствующей части конфигурации:

location / {

  recursive_error_pages on;
  error_page 502 = @handle_502;
  error_page 504 = @handle_504;

  proxy_pass        127.0.0.1:20006;
  proxy_redirect    http://127.0.0.1:20006 http://localhost:8000;
  proxy_http_version 1.1;
  proxy_set_header  Upgrade $http_upgrade;
  proxy_set_header  Connection $connection_upgrade;

} 

location @handle_504 {
  rewrite_by_lua_block {
   HttpRequestError( "Gateway timeout", "gateway timeout", 504)
}

location @handle_502 {
  rewrite_by_lua_block {
   HttpRequestError( "Bad gateway", "Bad gateway", 502)
}

Функция HttpRequestError генерирует веб-страницу с соответствующим статусом HTTP.

Проблема в том, что я хотел бы отличить тайм-ауты (504) от других ошибок (502), но это случай Linux (CentOS 7), если внутренний сервер вообще недоступен (процесс отсутствует в ОС). Iполучите 502 вместо 504 (должно быть 504, я прав?).В Windows я получаю 504 в этом случае: (

Не могли бы вы порекомендовать мне, пожалуйста, кто решает эту проблему?

PS. Я пытался применить возврат NGINX Reverse Proxy502 плохой шлюз, когда прокси-сервер не работает , но оказалось, что SELinux здесь не проблема.

С наилучшими пожеланиями Tomasz

...