Discussion:
N00b - "set" directive is not allowed here
Joel Parker
2017-04-25 19:41:27 UTC
Permalink
I have a set directive inside an http block which I thought was valid but
when I run config -t it says the nginx: [emerg] "set" directive is not
allowed here.


http {

log_format bodylog '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" $request_time '
'<"$request_body" >"$resp_body"';

lua_need_request_body on;

*set $resp_body "";*
body_filter_by_lua '
local resp_body = ngx.arg[1]
ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_body
if ngx.arg[2] then
ngx.var.resp_body = ngx.ctx.buffered
end
';

.....

Joel
Robert Paprocki
2017-04-25 19:54:43 UTC
Permalink
Read the docs please :)

http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#set

Set is allowed is server, location, and if blocks. Not http blocks.
I have a set directive inside an http block which I thought was valid but when I run config -t it says the nginx: [emerg] "set" directive is not allowed here.
http {
log_format bodylog '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" $request_time '
'<"$request_body" >"$resp_body"';
lua_need_request_body on;
set $resp_body "";
body_filter_by_lua '
local resp_body = ngx.arg[1]
ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_body
if ngx.arg[2] then
ngx.var.resp_body = ngx.ctx.buffered
end
';
.....
Joel
_______________________________________________
nginx mailing list
http://mailman.nginx.org/mailman/listinfo/nginx
Loading...