Reading request_body before passing to backend server
Maxim Dounin
mdounin at mdounin.ru
Mon May 13 07:09:16 UTC 2013
Hello!
On Sat, May 11, 2013 at 09:53:47PM -0400, dktp1 wrote:
> I am trying to read if a specific value is set (passed) as a POST using
> request_body.
>
> What I am trying to do is:
>
> server {
> ..
> if ($request_body ~ "API-value-Iwanttocheck") {
> set $my_api "TRUE";
> }
>
> And later on pass to the backend server:
>
> location / {
> proxy_pass http://backend:80;
> }
>
>
> However, that never seems to match. I even enabled logging and modified my
> log_format to have:
>
> "
> "POSTREQUEST:$request_body"
> "
>
> And I can see in the log when I don't have the if statement. When I add the
> if statement, it doesn't show up in the logs any more.
>
> Anyone have any idea? Or a simple way to check if a value set via POST is
> actually there?
The $request_body variable isn't available in rewrites as request
body isn't yet read at this phase.
Request body can be read and examined using embedded perl module,
see here:
http://nginx.org/en/docs/http/ngx_http_perl_module.html
--
Maxim Dounin
http://nginx.org/en/donation.html
More information about the nginx
mailing list