Using body content to generate a correct response
mdounin at mdounin.ru
Thu Jan 9 15:55:31 UTC 2014
On Tue, Jan 07, 2014 at 03:20:41PM -0200, Guido Accardo wrote:
> Hi everyone,
> I'm using Nginx to serve applications of Real Time Bidding listening in
> different machines inside of my network. Each one of these applications is
> handling request from only one exchange and I'm successfully proxying the
> content to the correct applications by using upstreams.
> One thing that I'm doing when I need to do some modifications in one o more
> of these applications is use "return 204" (for RTB system using OpenRTB
> protocl, HTTP 204 means NO BID) to not forward content. This was working
> great until now that my employer has decided to include another exchange,
> in consequence, another application. The new exchange is not OpenRTB based,
> it uses another protocol to answer, and of course no bid response is
> different too.
> In order to correctly answer with no bid I have to parse XML content which
> is inside of the request sent by the exchange. This is the form of the
> response I have to send:
> <bidResp xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="urn:yahoo:amp:3pi:bidResp BidResponse.xsd"
> <bidResEnv signature="00C745CC3125610C5C1A30EBC9388FC7F8FE1F21"
> signType="SHA-1" token="1218078703"/>
> <bidResponseSet numResp="1">
> OppId, advId, buyerLine, bidResEnv signature are items that comes with the
> As you can see I have 2 challenges here:
> * Parse XML body content with Nginx
> * Manipulate It to generate the correct answer
> Do I need to develop a Nginx plugin or there is a simpler way to parse the
> body content and use it to answer?
> I know that Nginx can use headers from the request in the response, so I
> presume that something with the body could also done.
Trivial solution would be to use embedded perl to read a request
body and return appropriate answer, see here:
It should be also possible to do this using 3rd party Lua module.
More information about the nginx-devel