POST request body manipulation

Sandro Bordacchini sandro.bordacchini at
Thu Apr 23 16:52:00 UTC 2015

Hello everyone,

i have a problem in configuring Nginx.

I have a location that serves as a proxy for a well-specified url "/login".
This location can receive both GET and POST request.
GET request have no body and should be proxied to a default and 
well-know host.
POST request contains the host to be proxied to in their body 
(extractable by a regexp).

To avoid use of "if", i was using a map:

map $request_body $target_tenant_loginbody {
     ~*account=(.*)%40(?P<body_tenant>.*)&password.* $body_tenant;

        location /login {

                 proxy_pass http://$target_tenant_loginbody:9000;

                 # Debug
                 proxy_set_header X-Debug-Routing-Value 

                 proxy_set_header          Host            $host;
                 proxy_set_header          X-Real-IP $remote_addr;
                 proxy_set_header          X-Forwarded-For 

This is not working (works with the GETs but not with the POSTs), seems 
that the map returns always the default value even if the regexp works 
(tested on
After a few tests, i understood that $request_body is empty or 
non-initialized. I tried also with $echo_request_body, that seems 
correctly initialized in location context but not in the map.

I read about a lot of issues and people having problem with empty 

Maybe is there another approach you could direct me to?

Thanks in advance,

Questa e-mail è stata controllata per individuare virus con Avast antivirus.

More information about the nginx mailing list