You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I encountered a problem. When I am in the balance_by_lua stage, without ngx.req.read_body(), I can use the get_post_args function to read the parameters of the post; but in the access_by_lua stage, an error will appear; Why is get_post_args() can be used normally in the balance_by_lua stage without ngx.req.read_body()?
tips:
1、It has been confirmed that lua_need_request_body is not turned on
2、ngx.req.read_body() is not read in other stages.
reproduction on the case:
upstream hash-forward {
server 0.0.0.1;
balancer_by_lua_block {
local ngx = require "ngx"
local cjson = require "cjson.safe"
local method = ngx.var.request_method
if method == "POST" then
local post_args, err = ngx.req.get_post_args()
if not post_args then
ngx.log(ngx.ERR, "failed to get post args: ", err)
return ngx.exit(500)
end
local post_str = cjson.encode(post_args)
ngx.log(ngx.ERR, "post params: " .. post_str)
end
local balancer = require "ngx.balancer"
local ok, err = balancer.set_current_peer("127.0.0.1", 8088)
if not ok then
ngx.log(ngx.ERR, "failed to set the current peer: ", err)
return ngx.exit(500)
end
}
keepalive 500; # connection pool
}
The text was updated successfully, but these errors were encountered:
You required to read POST argument in balancer_by_lua*.
As per documentation, ngx.req.read_body() is not available in the balancer_by_lua*
In order to access body value in the balancer_by_lua, it is suggested to read required value in the rewrite_by_lua* or access_by_lua* phase and store value in the ngx.ctx i.e request context.
you can access ngx.ctx in the balancer_by_lua* and take required operation
hi
the openresty version of mine is 1.13
reproduction on the case:
The text was updated successfully, but these errors were encountered: