Я использую 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