Почему 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хх?но это не его копия