Почему error_page не работает с ngx.location.capture?

У меня есть следующая конфигурация nginx, цель которой — проверить подключение к восходящему каналу:

      location @error {
    echo "problems";
}
location /test {
    proxy_pass http://2.2.2.2:2222/; # invalid upstream
    proxy_intercept_errors off;
    error_page 502 =200 @error;
}
location /test2 {
    content_by_lua_block {
        local res = ngx.location.capture("/test")
        ngx.log(ngx.STDERR, res.body)
        ngx.log(ngx.STDERR, res.status)
        ngx.say(res.body)
    }
}

При доступе/test, получаю: в теле ответа "проблемы" от@errorкак и ожидалось.

Но при доступе/test2, я получаю пустое тело ответа.

журнал ошибок:

       *1 connect() failed (101: Network is unreachable) while connecting to upstream, client: ::1, server: , request: "GET /test2 HTTP/1.1", subrequest: "/test", upstream: "http://2.2.2.2:2222/", host: "localhost"
content_by_lua(default:41):3:  while sending to client, client: ::1, server: , request: "GET /test2 HTTP/1.1", host: "localhost"
content_by_lua(default:41):4: 502 while sending to client, client: ::1, server: , request: "GET /test2 HTTP/1.1", host: "localhost"

Почему неerror_pageпоймать 502 в этом случае?

ps Этот вопрос связан с Как проверить возможность подключения к апстриму, игнорируя 5хх?но это не его копия

0 ответов

Другие вопросы по тегам