Проход через захваченный запрос в nginx с lua
Я делаю что-то вроде этого:
location /foo {
content_by_lua_block {
local reqType = ngx.var.request_method
if reqType == "POST"
res = ngx.location.capture("/bar")
else
res = ngx.location.capture("/baz")
end
ngx.say(res.body)
}
}
location /bar {
internal;
#fastcgi, omitted
}
location /baz{
internal;
#fastcgi, omitted
}
}
Но заголовки, отправляемые PHP, теряются, а код состояния всегда равен 200. Можно ли просто отправить исходный ответ? ngx.say()
просто выведите тело ответа, и мне нужно захватить весь запрос и отправить его в браузер.
я использую openresty/1.9.15.1
Редактировать: я нашел способ сделать это, но если существует какой-либо другой способ сделать это, был бы очень признателен.
1 ответ
Это возможно, используя свойства ответа:
response = ngx.location.capture("/bar")
for headerName, header in pairs(response.header) do
ngx.header[headerName] = header
end
ngx.status = response.status
ngx.say(response.body)
ngx.exit(response.status)