nginx-eval-module icon indicating copy to clipboard operation
nginx-eval-module copied to clipboard

nginx 1.4.7 hangs on requests with eval

Open tereska opened this issue 10 years ago • 2 comments

Nginx is compiled only with this module. I've downloaded module from: http://www.grid.net.ru/nginx/download/nginx_eval_module-1.0.1.tar.gz And it hangs on request.

worker_processes  1;
error_log  logs/error.log  info;

events {
    use epoll;
    worker_connections 1024;
    multi_accept on;
}

http {
    include       mime.types;
    default_type  text/plain;
    sendfile        on;
    keepalive_timeout  5;

    server {
        listen 80;
        server_name test.local;

        location / {

            eval $res {
                proxy_set_header Host $http_host;
                proxy_pass http://127.0.0.1:8081/check;
            }

            if ($res = 'spam') {
                return 401;
            }
            if ($res != 'spam') {
                return 404;
            }
        }

    }

}

I can see communication with my upstream server:

127.000.000.001.42387-127.000.000.001.08081: GET /check HTTP/1.0
Host: test.local
Connection: close
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Cache-Control: max-age=0


127.000.000.001.08081-127.000.000.001.42387: HTTP/1.1 200 OK
Content-Type: application/octet-stream
Content-Length: 11
Date: Sun, 30 Mar 2014 11:37:29 GMT
Connection: close

exampletext

Request and response are OK but after that nothing happend. Request hangs...

From port 80 perspective I have:

010.000.002.002.54814-010.000.002.015.00080: GET / HTTP/1.1
Host: test.local
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cache-Control: max-age=0

And after couple of seconds connection is closed.

Help me. Thanks!

tereska avatar Mar 30 '14 11:03 tereska

Same problem. I can read headers, and query parameters, but when I try to read the request body on the remote side with my Aiohttp server (await self.request.json() for example), request hangs.

remort avatar May 12 '22 14:05 remort

As for me, it happens because nginx didn't read the request body yet. This is exactly why we use lua_need_request_body on; in ngx_lua module. Though, I don't know how to say to eval module to read the body in advance.

remort avatar May 12 '22 18:05 remort