Welcome! Log In Create A New Profile

Advanced

Nginx lua module + SPDY = no request body

KiberGus
December 11, 2014 09:00AM
Hello. I'm experiencing problems with combination of nginx lua module
and SPDI. I use "access_by_lua_file" directive to validate requests.
In the script request checksumm is validated, so I need to get body of
the POST requests. "ngx.var.request_body" variable is used for this
purpose. This code works when client uses HTTP protocol, but when we
move to SPDY request body is always nil.

What I've tried:
I do call ngx.req.read_body() from lua script. Beside taht I've
added "lua_need_request_body on" directive to the nginx config (at
location and at server levels).
I've tried using "ngx.req.get_body_data()" instead of
"ngx.var.request_body".
I've checked that "ngx.req.get_body_file" returns nil. So request
is not written to file.
I've used wireshark to check, that request body is not empty.

If "access_by_lua_file" directive is removed, then backend receives
request body. So the problem occurs only within lua. We've tested
nginx=1.4.0 and nginx=1.6.2. So in case of 1.4 we use SPDY v2 and in
case SPDY v3.1.

Here is a test config:

server {
listen [::]:80;
listen [::]:6121 spdy;
spdy_headers_comp 9;

client_body_buffer_size 100k;
client_max_body_size 100k;
lua_need_request_body on;

server_name *;

location /test {
access_by_lua '
ngx.req.read_body()
if not ngx.req.get_body_data() then
return ngx.exit(403)
end
';

content_by_lua '
ngx.header["Content-Type"] = "text/plain"
ngx.say("hello world")
';
}
}

If you request it without body you get 403. Otherwice you get 200:

$ curl --data "TEST" http://localhost/test
hello world
$ curl http://localhost/test
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.4.0</center>
</body>
</html>

But if SPDY protocol is used, than it always returns 403. Any help is
appreciated. Thank you.

_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

Nginx lua module + SPDY = no request body

KiberGus December 11, 2014 09:00AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 268
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready